2012-12-10 60 views
15

我有這個在我的代碼:DateTime和CultureInfo的

var date1 = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); 

當我目前的文化性是荷蘭(nl-NL),而不是5月1日我得到的1月5日。

我認爲錯誤在第二個參數dd.MM.yyyy HH:mm:ss

有沒有辦法解決這個問題,使用CultureInfo類?

+1

是,不要使用ParseExact但解析!使用ParseExact,您可以針對日期零件提出特定的訂購,因爲文化只用於字符串和分隔符。 –

+1

'date'從哪裏來?它是如何創建的? –

回答

22

你可以嘗試以下方法:

System.Globalization.CultureInfo cultureinfo = 
     new System.Globalization.CultureInfo("nl-NL"); 
DateTime dt = DateTime.Parse(date, cultureinfo); 
+1

什麼時候文化是en-us?我需要爲每種語言編寫代碼嗎? –

+1

你可以[請參考這裏](http://www.csharp-examples.net/culture-names/) – RajeshKdev

1

InvariantCulture類似於en-US,所以我會用正確的CultureInfo代替:

var dutchCulture = CultureInfo.CreateSpecificCulture("nl-NL"); 
var date1 = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", dutchCulture); 

Demo

而當文化是EN-US怎麼樣?我需要爲每個語言編碼 嗎?

如果您想知道如何在另一種文化中顯示日期,如「en-us」,則可以使用date1.ToString(CultureInfo.CreateSpecificCulture("en-US"))

+0

那文化是什麼時候en-us呢?我需要爲每種語言編寫代碼嗎? –

+0

@Srcee:你是什麼意思?如果格式字符串是「dd.MM.yyyy」,它將永遠不會是文化en-us。如果您的意思是如何在另一種文化中展示日期,那麼這是另一個問題。你可以使用'date1.ToString(CultureInfo.CreateSpecificCulture(「en-US」))''。 –

5

使用CultureInfo類來更改您的文化信息。

var dutchCultureInfo = CultureInfo.CreateSpecificCulture("nl-NL"); 
var date1 = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", dutchCultureInfo);