关于时区:在白天标准时间内重复几小时

What hour repeats in Daylight standard time

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

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

哪个是对的?

1
2
3
4
5
6
7
8
9
10
11
12
13
        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

凌晨2点,你"回落"到凌晨1点(1:59 - > 1),因此凌晨1点重复,凌晨2点仅在1小时后发生。 同样,当你"向前迈进"时,将会有凌晨2点(1:59 - > 3)

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