2013-05-29 41 views
3

我需要使用C#字符串到SqlDateTime:如何設置識別格式?

SqlDateTime.Parse(val) 

其中val是一個字符串,如 「1992年3月23日00:00:00」。

該字符串採用歐洲格式,即日期在月份之前。但Parse希望「美國」格式。我如何告訴它使用特定的日期時間格式/區域設置?

在此先感謝!

+1

你沒有'DateTime'實例中傳遞到數據庫?爲什麼要使用字符串呢? – Oded

+0

爲什麼不使用像'YYYY-MM-dd HH:mm:ss'這樣''2013-05-29 13:38:00'完全不帶聲望的東西,那麼一切都會知道它的含義。 – Belogix

+0

SqlDateTime使用InvariantCulture。當你需要不同的東西時,使用DateTime和Parse重載,你可以提供不同的文化或格式。然後使用帶有DateTime的SqlDateTime構造函數。如果可能的話,像其他的一樣,如果需要的話,儘量使用獨立於文化的字符串格式 – Ralf

回答

5

試試這個:

string val = "23.12.1992 00:00:00"; 

// Parse exactly from your input string to the native date format. 
DateTime dt = DateTime.ParseExact(val, "dd.M.yyyy hh:mm:ss", null); 

// Part to SqlDateTime then    
System.Data.SqlTypes.SqlDateTime dtSql = System.Data.SqlTypes.SqlDateTime.Parse(dt.ToString("yyyy/MM/dd")); 

這可能在一個語句來完成,但爲了說明而分開。

0

你可以試試嗎?

string valInEuropean = "23.3.1992 00:00:00"; 
DateTime dateInEuropean = DateTime.Parse(valInEuropean); 
string valInAmerican = dateInEuropean.ToString("yyyy-MM-dd HH:mm:ww"); 
+1

這隻有在他的文化已被設置爲歐洲時纔有效,否則DateTime.Parse調用將失敗。 – Chris

+0

euhh是的,但它確實與否? –

0

當格式被稱爲將字符串轉換爲DateTime對象(在這種情況下) 使用

DateTime dwweek = DateTime.ParseExact("23.3.1992 00:00:00", "dd.MM.yyyy hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture); 
2

你有沒有嘗試過的DateTime,而不是SQLDATETIME

DateTime d = DateTime.Parse(val); 
String s = d.ToString(CultureInfo.CreateSpecificCulture("en-US"));