让我们想象一下,这个小程序运行:DateTime.Now VS系统时间
while (true)
{
Console.WriteLine($"{DateTime.UtcNow} -> {DateTime.Now} tz={TimeZone.CurrentTimeZone.StandardName}/{TimeZoneInfo.Local.StandardName}");
await Task.Delay(TimeSpan.FromSeconds(1));
}
当我更改了系统的时区在程序运行的应用程序没有看到改变的时候。时区和时间就好像时区没有改变。
为了让应用程序显示新的时间和时区,我需要重新启动应用程序。
如果我更改系统时间,则立即收回时间更改。
这将是巨大的,如果你能帮助我的三个问题:
- 是这个记录任何地方?
- 为什么在应用程序运行时没有选择时区更改?
- 我可以做任何事情,让应用程序在运行时选择时区更改吗?
这里有一个小屏幕截图的使用时间比操作系统不同,显示.NET应用程序:
BTW。在Raspberry Pi上的Windows IOT上,我的实验显示,如果我重新启动应用程序,它将显示新的时区,但显示“旧”时间。重新启动系统后,新时间将会启动。
你还知道如何实现TimeZoneInfo.ClearCachedData在通用Windows中的功能吗?该方法不可用。 – mayu
在通用Windows中,您需要通过反射调用此方法(并测试它在您的设备上工作) - 它已被制作为私有 – mayu