为什么 DateTime.TryParseExact() return 这些输入字符串的时区不同?
Why does DateTime.TryParseExact() return different time zone for these input strings?
我有最简单的方法将字符串解析为 DateTime 但是 return 类型是 DateTimeOffset?.
我预计输出是
2011-01-11 00:00:00 +01:00
2011-10-11 00:00:00 +01:00
而是
2011-01-11 00:00:00 +01:00
2011-10-11 00:00:00 +02:00
为什么我会出现这种行为?我的测试程序如下。
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Parse("20110111").ToString());
Console.WriteLine(Parse("20111011").ToString());
Console.ReadLine();
}
public static DateTimeOffset? Parse(string date)
{
DateTime parsedDate;
if (DateTime.TryParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate))
{
return parsedDate;
}
return null;
}
}
它正在为当前机器返回 TimeZone
,一小时的差异是由于夏令时。这些在 10 月无效,但在 1 月有效。
我有最简单的方法将字符串解析为 DateTime 但是 return 类型是 DateTimeOffset?.
我预计输出是
2011-01-11 00:00:00 +01:00
2011-10-11 00:00:00 +01:00
而是
2011-01-11 00:00:00 +01:00
2011-10-11 00:00:00 +02:00
为什么我会出现这种行为?我的测试程序如下。
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Parse("20110111").ToString());
Console.WriteLine(Parse("20111011").ToString());
Console.ReadLine();
}
public static DateTimeOffset? Parse(string date)
{
DateTime parsedDate;
if (DateTime.TryParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate))
{
return parsedDate;
}
return null;
}
}
它正在为当前机器返回 TimeZone
,一小时的差异是由于夏令时。这些在 10 月无效,但在 1 月有效。