2011-02-09 2 views
3

У меня есть события, которые срабатывают при каждом переключении на летнее время.C# Переход на летнее время DateTime

я получаю, когда весна/осень переключатели будет происходить с использованием

TimeZone.CurrentTimeZone.GetDaylightChanges(year) 

Это возвращает меня 2 DateTimes: 1. Запустите DATETIME, который Spring переключательный 3. Конец Datetime который является падение переключательный.

Весна вперед работает отлично.

Но для осени один конец времени, который я получаю, составляет 2.00 AM CST. Поэтому, когда я вычитаю секунду, я получаю 1.59.59 AM CST. Таким образом, мероприятие будет запущено через час. Мне нужно установить триггер для 1.59.59 CDT. Как мне создать это Datetime?

ответ

1

Вы хотите установить его за 1 секунду до начала изменения времени. Преобразуйте в UTC, затем вычтите дельта и другую секунду.

DateTime fall; //set to 2:00 AM CST 
DaylightTime time; //Filled from your GetDaylightChanges() call. 
DateTime fallAdjusted = fall.ToUniversalTime().Subtract(time.Delta).AddSeconds(-1); 
+0

Согласен, используйте UTC. То, что вы пытаетесь сделать, это использовать время, которое на самом деле не существует. –

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