【发布时间】:2017-07-04 07:03:57
【问题描述】:
让我们假设这个小程序运行:
while (true)
{
Console.WriteLine($"{DateTime.UtcNow} -> {DateTime.Now} tz={TimeZone.CurrentTimeZone.StandardName} / {TimeZoneInfo.Local.StandardName}");
await Task.Delay(TimeSpan.FromSeconds(1));
}
当我在程序运行时更改系统的时区时,应用程序看不到更改。时区和时间就好像时区没有改变一样。
为了让应用程序显示新的时间和时区,我需要重新启动应用程序。
如果我更改系统时间,时间更改会立即生效。
如果您能帮我解决三个问题,那就太好了:
- 这是否记录在任何地方?
- 为什么在应用程序运行时没有发现时区变化?
- 我可以采取任何措施让应用在运行时获取时区更改吗?
这是一个小屏幕截图,显示 .NET 应用程序使用的时间与操作系统不同:
顺便说一句。在 Raspberry Pi 上的 Windows IOT 上,我的实验表明,如果我重新启动应用程序,它将显示新时区,但显示“旧”时间。重新启动系统后将采用新的时间。
【问题讨论】: