为什么DateTime.TryParseExact()为这些输入字符串返回不同的时区

本文关键字:返回 字符串 时区 输入 TryParseExact DateTime 为什么 | 更新日期: 2023-09-27 18:21:46

我有一个最简单的方法,可以将字符串解析为DateTime,但返回类型是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;
    }
}

为什么DateTime.TryParseExact()为这些输入字符串返回不同的时区

它返回当前机器的TimeZone,一小时的差异是由于节省了白天的时间。这些措施在10月份没有生效,但在1月份生效。