TimeZoneInfo DST против настроек Windows - PullRequest
0 голосов
/ 09 мая 2018

Отражает ли TimeZoneInfo.SupportsDaylightSavingTime статус отключенного / включенного параметра «Настроить для летнего времени автоматически» в настройках даты и времени Windows?

Я пытаюсь скопировать эти настройки в приложении в режиме киоска, где Windows недоступна для пользователя, и мне удалось заставить все работать, включая настройку часовых поясов с или без DST, используя tzutil, но во время тестирования я заметил, что некоторые Настройки DST часовых поясов (как в Москве) не синхронизированы с Windows.

Мы знаем, что Россия избавилась от летнего времени несколько лет назад, поэтому, когда я захожу в Windows и выбираю Москву в качестве часового пояса, я вижу это:

Adjust for DST automatically is off, because it's not supported?

Когда я запускаю тестовое консольное приложение (.NET 4.6.1), а затем извлекаю текущий часовой пояс из GetSystemTimeZones, я вижу, что оно действительно поддерживает DST:

DST is supported

Если SupportsDaylightSavingTime имеет значение true, разве не должен быть включен тумблер в настройках Windows?

Я даже дошел до тестирования, вызвав функцию Win32 GetDynamicTimeZoneInformation , чтобы проверить, является ли DynamicDaylightTimeDisabled истинным или ложным (хотя я не совсем уверен, отражает ли это настройки в Windows). Я впервые попробовал с моим реальным часовым поясом (Хельсинки), и результаты были:

Когда переключатель включен, DynamicDaylightTimeDisabled равен false , но когда переключатель выключен, он становится true . Итак, я предположил, что это, вероятно, отражает это?

Я пытался с Россией, и значение для DynamicDaylightTimeDisabled равно false , поэтому дневной свет включен?

Моя версия Windows 10.0.17134 Сборка 17134 , если это поможет.

Я действительно смущен этим и был бы очень признателен за помощь. Спасибо!

1 Ответ

0 голосов
/ 09 мая 2018

Причина, как указывает Гленебоб в своем комментарии, заключается в том, что после 2014 года не действует никаких правил корректировки, когда Россия решила больше не использовать DST.

Российский часовой пояс поддерживает летнее время, но только до 2014 года, поэтому я действительно должен был вызвать TimeZoneInfo.GetAdjustmentRules , чтобы выяснить, действителен ли DST на этом этапе. момент времени или нет.

Приложение, которое я разрабатываю, также использует UWP API, в котором фактически отсутствует этот метод, но это совсем другая проблема ...

Я там некоторое время гонялся за диким гусем ... Мы живем и учимся ...

ОБНОВЛЕНИЕ: Я решил не копировать Windows, проверив правила настройки. Маленькая ценность для слишком больших усилий и сложности. Нет, спасибо!

...