0

我目前有一个存储为时区 UTC 日期时间的 DateTimes 列表。当我从 UTC 转换为本地日期时间并且日期落在夏令时标准时间的开始时,重复的时间是凌晨 1 点而不是凌晨 2 点。

我使用以下内容从 UTC 转换为本地时间。请注意,1am 在 local1 和 local2 中重复。我预计凌晨 2 点会重复。

哪个是对的?

        TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Mountain Standard Time");
        //UTC time
        var utc1 = new DateTime(1990, 10, 28, 7, 0, 0);     //This is start of daylight standard time.
        var utc2 = new DateTime(1990, 10, 28, 8, 0, 0);
        var utc3 = new DateTime(1990, 10, 28, 9, 0, 0);
        utc1 = DateTime.SpecifyKind(utc1, DateTimeKind.Utc);
        utc2 = DateTime.SpecifyKind(utc2, DateTimeKind.Utc);
        utc3 = DateTime.SpecifyKind(utc3, DateTimeKind.Utc);

        //Get the local time with adjustment for Daylight standard time, "fall back"
        var local1 = TimeZoneInfo.ConvertTimeFromUtc(utc1, tz); //Returns 1am
        var local2 = TimeZoneInfo.ConvertTimeFromUtc(utc2, tz); //Returns 1am. Should this be 2am?
        var local3 = TimeZoneInfo.ConvertTimeFromUtc(utc3, tz); //Returns 2am
4

1 回答 1

1

在凌晨 2 点,您“退回”到凌晨 1 点(1:59 -> 1),因此重复了凌晨 1 点,而凌晨 2 点仅在一小时后发生。同样,当您“向前跳”时,不会有凌晨 2 点 (1:59 -> 3)

来源:http ://aa.usno.navy.mil/faq/docs/daylight_time.php (美国海军天文台保持美国国防部官方时间(来源:http ://www.usno.navy.mil/USNO/时间))

于 2012-06-18T19:45:40.200 回答