讓我們想象一下,這個小程序運行: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