DateTime.ToLocalTime () в зимнее / летнее время

Я использую DateTime.ToLocalTime () для преобразования дат из UTC в местное время. Мой часовой пояс GMT + 1 (Белград, Будапешт, Любна ...), он правильно установлен в настройках Windows (XP).

В прошлые выходные в нашем часовом поясе мы перешли с зимнего времени на летнее, то есть мы вернули местное время на один час назад.

Как я вижу, с этого момента метод ToLocalTime ведет себя странно. Когда я использую его для преобразования дат после зимнего изменения времени, он отлично работает, например:

var utcDate2 = new DateTime(2011, 11, 2, 9, 0, 0,DateTimeKind.Utc);

utcDate1.ToLocalTime () значение: 2011.11.02. 10:00:00 это правильно

Берт, когда я хочу преобразовать дату до этого изменения (например, дату из летнего времени), он возвращает неверное значение, подобное этому:

var utcDate1 = new DateTime(2011, 10, 23, 9, 0, 0,DateTimeKind.Utc);

utcDate2.ToLocalTime () значение: 2011.10.23. 10:00:00 неверно Должно быть 2011.10.23. 11:00:00

Что мне делать, чтобы получить правильные значения? Как мне использовать ToLocalTime, который также регулирует зимнее / летнее время?

8
задан Tom 2 November 2011 в 11:56
поделиться