解析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

为什么日期和月份有这些差异?

解析W7和Server2012 R2之间的日期差异

DateTime.TryParse使用所提供区域性的标准日期和时间格式。看起来en-CA文化在Windows 7和Windows Server 2012中有不同的格式。

似乎Windows 7使用dd/MM/yyyy格式和Windows Server 2012使用MM/dd/yyyy格式。

此设置可以在。net框架版本和/或操作系统版本中更改。别担心。如果你想准确地解析你的字符串,你可以使用DateTime.ParseExactDateTime.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
}