Я пытаюсь реплицировать настройки даты и времени Windows в приложении UWP, и у меня не получается работать с настройками летнего времени (DST).
Мне удалось заставить все работатьЯ могу просто изменить системное время и часовой пояс из своего приложения, но опция Автоматическая настройка перехода на летнее время сбивает меня с толку.
Сначала я подумал, что этого достаточно, чтобы проверить TimeZoneInfo.SupportsDaylightSavingTime
, затем я обнаружил, что мне, вероятно, также нужно проверить, находится ли текущая выбранная дата / время в диапазоне летнего времени, выполнив TimeZoneInfo.IsDaylightSavingTime
.
Ну, я подумал, что все правильно, но после тестирования,моя собственная опция «Настроить DST» не совпадает с настройкой Windows, и, поскольку я не вижу исходный код Windows, я понятия не имею, какие другие условия они проверяют, чтобы отключить / включить его.
Мое приложение UWP:
Настройки Windows:
AmЯ все еще что-то здесь упускаю?Мой другой вопрос по этому поводу может быть найден здесь для тех, кто заинтересован.
Может быть, некоторые разработчики MS с инсайдерской информацией могут подсказать мне логику этого тумблера: -)
Заранее спасибо!
ОБНОВЛЕНИЕ:
Результаты из tzutil показывают, что когда дата 16 мая 2011 года и часовой пояс - Москва (UTC + 3), отключение DST с помощью команды tzutil /s "Russian Standard Time_dstoff"
просто возвращает «Русское стандартное время» без _dstoff, потому что DST неприменимо, и это соответствует тому, что сообщает Windows.
Но тогда почемуКласс TimeZoneInfo .NET говорит это? Пробовал также с:
var currentDateTime = new DateTime(2011, 5, 16, 0, 0, 0, DateTimeKind.Local);
var isDst = TimeZoneInfo.Local.IsDaylightSavingTime(currentDateTime); //True
Итак, .NET говорит, что текущая дата находится в диапазоне DST, но DST нельзя отключить ни с помощью TZUTIL, ни из настроек Windows?
Может быть, я упускаю что-то очень очевидное здесь, но я не вижу этого ...
ОБНОВЛЕНИЕ:
Изменение месяца на февраль, поворотыОтрегулировать включение DST в Windows, из-за правил настройки?Но в Хельсинки у нас тоже есть эти переходы, и тумблер не отключен?Чем отличается?
ОБНОВЛЕНИЕ:
Решили не делать ничего из этого, а просто отметьте TimeZoneInfo.SupportsDaylightSavingTime
.Это не стоит никому ни времени, ни энергии, чтобы делать это точно так же, как Windows.