升级到Windows 8 RTM后,我已经停止工作的某些日期时间解析代码。我已经使用标准控制台应用程序复制了此代码:

CultureInfo provider;

provider = new CultureInfo("en-US");

string testDate = "1/1/2012";

DateTime date = DateTime.MinValue;
if (DateTime.TryParseExact(testDate,
      CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern,  // (dd/MM/yyyy)
      provider,
      DateTimeStyles.None,
      out date))
    Console.WriteLine("Date: {0}", date);
else
    Console.WriteLine("Can't parse date: {0} / {1}", testDate, date);

Console.ReadLine();


输出:Can't parse date: 1/1/2012 ...

我还尝试过将文化信息设为“ eb-GB”(因为对于给定的格式没有区别)。但是,如果我将输入日期更改为01/01/2012,则可以正常工作。

.net 4.5 DateTime框架中是否发生了一些改变,从而影响了这一点?

最佳答案

您需要更改ShortDatePattern以使用所选提供程序中的一个,而不是CurrentCulture中的一个。

DateTime date = DateTime.MinValue;
if (DateTime.TryParseExact(testDate,
      provider.DateTimeFormat.ShortDatePattern, // Change this line
      provider,
      DateTimeStyles.None,
      out date))
    Console.WriteLine("Date: {0}", date);
else
    Console.WriteLine("Can't parse date: {0} / {1}", testDate, date);

10-04 21:44