我正在解析一個字符串以將其轉換爲DateTime。我在某些情況下,得到一個錯誤:DateTime.Parse:更改文化時發生異常
String was not recognized as a valid DateTime.
我只得到,如果我跑從位於不同的國家比美國的計算機應用此錯誤。我在字符串中看到的是09/20/2010 14:11
,在這種情況下,我得到一個異常。如果我的值如下:10/05/2010 12:54
我沒有發現異常。我想這是事實,那天是20,這臺電腦在歐洲,所以它認爲20是這個月。問題是我強迫它是EN-US:
CompletedDttm = DateTime.ParseExact(value, "MM/dd/yyyy hh:mm", new CultureInfo("en-US"));
因爲我收到例外,我想知道這是正確的做法。
任何想法如何解析一個字符串的方式,無論我在機器上運行什麼樣的文化?
如果您知道格式將始終如此,您可以使用DateTime.Parse(值,CultureInfo.InvariantCulture);就日期和時間格式而言,InvariantCulture大致相當於en-US。順便說一句,如果你像這樣解析它,.Net將無法確定時區,它實際上會將你的日期時間視爲可能導致錯誤的「未指定的本地」。如果您知道該源使用UTC,請使用以下內容:DateTime.Parse(value,CultureInfo.InvariantCulture,DateTimeStyles.AssumeUniversal); – 2010-10-05 19:51:31