解析W7和Server2012 R2之间的日期差异
本文关键字:日期 之间 R2 W7 Server2012 解析 | 更新日期: 2023-09-27 18:17:29
DateTime Date;
DateTime.TryParse("01.09.2015", (new CultureInfo("en-CA")), DateTimeStyles.None, out Date);
Windows 7 SP1 Result:
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 Standard Result:
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
为什么日期和月份有这些差异?
DateTime.TryParse
使用所提供区域性的标准日期和时间格式。看起来en-CA
文化在Windows 7和Windows Server 2012中有不同的格式。
似乎Windows 7使用dd/MM/yyyy
格式和Windows Server 2012使用MM/dd/yyyy
格式。
此设置可以在。net框架版本和/或操作系统版本中更改。别担心。如果你想准确地解析你的字符串,你可以使用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
}