Почему метод IsDaylightSavingTime() возвращает явно неправильное значение для определенного диапазона часов? Чтобы быть однозначным, я начинаю с даты UTC. Время new DateTime(2016, 10, 30, 0, 59, 0, DateTimeKind.Utc)
- последняя минута DST для WEST. Действительно, в WEST он дает 2 часа смещения (2,59 утра), а через минуту происходит смещение 1 часа (2,00 утра). Но тогда почему:IsDaylightSavingTime странное поведение
TimeZoneInfo.ConvertTimeFromUtc(
new DateTime(2016, 10, 30, 0, 59, 0, DateTimeKind.Utc),
TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")
).IsDaylightSavingTime()
возвращает false ?!
Этот метод возвращает false, начиная с new DateTime(2016, 10, 30, 0, 0, 0, DateTimeKind.Utc)
(но почему?), Второй до, new DateTime(2016, 10, 29, 23, 59, 59, DateTimeKind.Utc)
, он возвращает true.
методы В TimeZoneInfo, кажется, работает:
var thisIsTrue = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time").IsDaylightSavingTime(new DateTime(2016, 10, 30, 0, 0, 0, DateTimeKind.Utc));
var thisIsFalse = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2016, 10, 30, 0, 0, 0, DateTimeKind.Utc), TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")).IsDaylightSavingTime();
Я запустил этот код в VS 2015 Community, и все три даты, которые вы указали, верны для меня. Не могли бы вы подробно описать свою среду? –
Я запускаю этот код на VS 2015, мой часовой пояс W. Europe Standard Time, есть ли что-то еще, что вам может понадобиться? –
Не уверен. Я нашел ».IsDaylightSavingTime() 'вернет false, если дата не отформатирована правильно или неоднозначна, но я не замечаю ошибки в коде, которые могли бы вызвать это. Есть ли большой фрагмент кода? https://msdn.microsoft.com/en-us/library/system.datetime.isdaylightsavingtime(v=vs.110).aspx –