升级到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);