Какой час повторяется в стандартное летнее время

В настоящее время у меня есть список DateTimes, хранящийся как дата и время UTC часового пояса. Когда я перехожу к преобразованию из UTC в местное время и дату, и когда дата приходится на начало стандартного летнего времени, повторяющийся час равен 1:00, а не 2:00.

Я использую следующее для преобразования из 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

person Jerry    schedule 18.06.2012    source источник


Ответы (1)


В 2 часа ночи вы «откатываетесь» к 1 часу ночи (1:59 -> 1), поэтому 1 час ночи повторяется, а 2 часа ночи наступает только через час. точно так же, когда вы «прыгаете вперед», НЕТ 2:00 (1:59 -> 3)

источник: http://aa.usno.navy.mil/faq/docs/daylight_time.php (Военно-морская обсерватория США хранит официальное время Министерства обороны США (источник: http://www.usno.navy.mil/USNO/time))

person Ross Larson    schedule 18.06.2012