Я работаю над изменением системного часового пояса из приложения WPF. Для этого я использую неуправляемый код, который я нашел на этом сайте: changing time zones. Он меняет мой часовой пояс. Однако, когда я нажимаю на окна, я вижу сообщение: «Ваш текущий часовой пояс не распознается. Выберите действующий часовой пояс, используя ссылку ниже». Я мог себе представить, что есть какая-то небольшая разница. Я проанализировал один часовой пояс - как он представлен перед программным изменением и после.Как программно изменить системный часовой пояс
ДО:
BaseUtcOffset: 4:00:00:00
Daylight Name: "Arabian Daylight Time"
Display Name: "(UTC +4:00) Abu Dhabi, Muscat"
Id: "Arabian Daylight Time"
Standard Name: "Arabian Daylight Time"
SupportsDaylightSavingTime: false
после:
BaseUtcOffset: -4:00:00:00
Daylight Name: ""
Display Name: "Arabian Daylight Time"
Id: "Arabian Daylight Time"
Standard Name: "Arabian Daylight Time"
SupportsDaylightSavingTime: false
Я не нашел способ, чтобы установить "Display Name" с помощью TIME_ZONE_INFORMATION. Итак, что-то, что он называется «(UTC +4: 00) Абу-Даби, Маскат» на графическом интерфейсе, когда пользователь вручную изменил его с помощью Windows, теперь он называется «Arabian Daylight Time». Возможно, эти различия являются одной из причин, почему я вижу сообщение «Ваш текущий часовой пояс ...». Я читал где-то еще, что перезагрузка помогает, и это сообщение исчезает - к сожалению, после перезагрузки ничего не меняется.
Как вы получили «-4: 00: 00: 00' (United States Eastern Daylight Time) от' +4: 00: 00: 00'? – Gabe
Я заметил это, конечно. это может быть ошибка в методе, который создает TimeZoneInformation на основе TimeZoneInfo. Однако это ничего не меняет, когда дело доходит до вопроса, который у меня есть. Зачем? потому что я использовал один раз метод GetTimeZoneInformation - я записал все значения внутри структуры и в следующий раз, когда я прошел ТОЧНО одни и те же значения. но у меня было сообщение «ваш текущий часовой пояс ...». – user3046525