2012-12-10 26 views
15

Tôi có điều này trong mã của tôi:DateTime và CultureInfo

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

Và khi cultur hiện tại của tôi là dutch (nl-NL) thay vì 01 tháng năm tôi nhận được 05 tháng 1.

Tôi cho rằng lỗi nằm trong tham số thứ hai dd.MM.yyyy HH:mm:ss.

Có cách nào để khắc phục sự cố này bằng cách sử dụng lớp CultureInfo không?

+1

Vâng, không sử dụng ParseExact nhưng Parse !!! Với ParseExact, bạn đang yêu cầu một thứ tự cụ thể cho các phần ngày tháng, văn hóa chỉ được sử dụng cho các chuỗi và dấu phân cách. –

+1

Ngày 'ngày' đến từ đâu? Nó được tạo ra như thế nào? –

Trả lời

22

Bạn có thể thử như sau:

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

Và điều gì sẽ xảy ra khi nền văn hóa là chúng ta? Tôi có phải viết mã cho từng ngôn ngữ duy nhất không? –

+1

Bạn có thể [Tham khảo tại đây] (http://www.csharp-examples.net/culture-names/) – RajeshKdev

1

InvariantCulture cũng tương tự như en-US, vì vậy tôi sẽ sử dụng đúng CultureInfo thay vì:

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

Demo

Và những gì về khi văn hóa là en-us? Tôi có phải viết mã cho mọi ngôn ngữ duy nhất không?

Nếu bạn muốn biết cách hiển thị ngày trong một nền văn hóa khác như "en-us", bạn có thể sử dụng date1.ToString(CultureInfo.CreateSpecificCulture("en-US")).

+0

Và điều gì sẽ xảy ra khi văn hóa là chúng ta? Tôi có phải viết mã cho từng ngôn ngữ duy nhất không? –

+0

@Srcee: Ý của bạn là gì? Nếu chuỗi định dạng là "dd.MM.yyyy", nó sẽ không bao giờ là văn bản vi tính. Nếu bạn thay vào đó có nghĩa là làm thế nào để hiển thị ngày trong một nền văn hóa khác, thì đó là một câu hỏi khác. Bạn có thể sử dụng 'date1.ToString (CultureInfo.CreateSpecificCulture (" en-US "))'. –

5

Sử dụng CultureInfo lớp học để thay đổi thông tin văn hóa của bạn.

var dutchCultureInfo = CultureInfo.CreateSpecificCulture("nl-NL"); 
var date1 = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", dutchCultureInfo); 
Các vấn đề liên quan