Предположим, что эта небольшая программа работает:
while (true)
{
Console.WriteLine($"{DateTime.UtcNow} -> {DateTime.Now} tz={TimeZone.CurrentTimeZone.StandardName} / {TimeZoneInfo.Local.StandardName}");
await Task.Delay(TimeSpan.FromSeconds(1));
}
Когда я меняю системный часовой пояс, когда программа запускается, приложение не видит изменения. Часовой пояс и время как будто часовой пояс не изменился.
Чтобы приложение отображало новое время и часовой пояс, мне нужно перезапустить приложение.
Если я изменил системное время, время изменения сразу же подбирается.
Было бы здорово, если бы вы могли помочь мне с тремя вопросами:
- Этот документ документирован где угодно?
- Почему не происходит изменение часового пояса во время работы приложения?
- Могу ли я сделать что-нибудь, чтобы приложение забирало изменения в часовом поясе во время работы?
Вот небольшой скриншот, показывающий приложение .NET с использованием времени, отличного от операционной системы:
BTW. В Windows IOT на Raspberry Pi мой эксперимент показывает, что если я перезапущу приложение, он покажет новый часовой пояс, но "старое" время. Новое время будет восстановлено после перезапуска системы.