DateTime Date;
DateTime.TryParse("01.09.2015", (new CultureInfo("en-CA")), DateTimeStyles.None, out Date);
Windows 7 SP1结果:
Date {01.09.2015 00:00:00} System.DateTime
Date {01.09.2015 00:00:00} System.DateTime
Day 1 int
DayOfWeek Tuesday System.DayOfWeek
DayOfYear 244 int
Hour 0 int
Kind Unspecified System.DateTimeKind
Millisecond 0 int
Minute 0 int
Month 9 int
Second 0 int
Ticks 635766624000000000 long
TimeOfDay {00:00:00} System.TimeSpan
Year 2015 int
Windows Server 2012 R2标准结果:
Date {1/9/2015 12:00:00 AM} System.DateTime
Date {1/9/2015 12:00:00 AM} System.DateTime
Day 9 int
DayOfWeek Friday System.DayOfWeek
DayOfYear 9 int
Hour 0 int
Kind Unspecified System.DateTimeKind
Millisecond 0 int
Minute 0 int
Month 1 int
Second 0 int
Ticks 635563584000000000 long
TimeOfDay {00:00:00} System.TimeSpan
Year 2015 int
为什么这些差异日和月?需要任何补丁?
答案 0 :(得分:0)
DateTime.TryParse
使用提供的文化standard date and time formats。看起来这种en-CA
文化与Windows 7和Windows Server 2012具有不同的格式。
似乎使用dd/MM/yyyy
格式的Windows 7和使用MM/dd/yyyy
格式的Windows Server 2012。
此设置可以更改.NET Framework版本和/或操作系统版本。别担心。如果您想要完全解析字符串,可以使用DateTime.ParseExact
或DateTime.TryParseExact
方法为字符串提供准确的格式。
string s = "01.09.2015";
DateTime dt;
if(DateTime.TryParseExact(s, "dd.MM.yyyy", CultureInfo.GetCultureInfo("en-CA"),
DateTimeStyles.None, out dt))
{
// 1 September 2015
}
或
string s = "01.09.2015";
DateTime dt;
if(DateTime.TryParseExact(s, "MM.dd.yyyy", CultureInfo.GetCultureInfo("en-CA"),
DateTimeStyles.None, out dt))
{
// 9 January 2015
}