Я использую DateTime.ToLocalTime()
для преобразования дат из UTC в местное время. Мой часовой пояс GMT + 1 (Белград, Будапешт, Любина ...), он правильно установлен в Windows Settings (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, который также регулирует зимнее / летнее время?