我正在解析一个字符串以将其转换为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