2012-06-18 2 views
0

В настоящее время у меня есть список DateTimes, сохраненный как дата и время UTC в часовом поясе. Когда я перехожу к конвертации из UTC в местное время и время, когда дата падает на начало стандартного времени Daylight, повторяющийся час составляет 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 

ответ

1

В 2 часа ночи вы "падают обратно" в 1am (1:59 -> 1), следовательно, повторяется 1 утра и 2 утра происходит только один час позже. Аналогично, когда вы "весной вперед" было бы NO 2 AM (1:59 -> 3)

Источник: http://aa.usno.navy.mil/faq/docs/daylight_time.php (US Naval Observatory держит официальное время Министерство обороны США (источник для этого: http://www.usno.navy.mil/USNO/time))

Смежные вопросы