{DateTime.Now} tz={TimeZ-6ren">
gpt4 book ai didi

c# - DateTime.Now 与系统时间

转载 作者:IT王子 更新时间:2023-10-29 04:18:50 25 4
gpt4 key购买 nike

让我们想象一下这个小程序运行:

while (true)
{
Console.WriteLine($"{DateTime.UtcNow} -> {DateTime.Now} tz={TimeZone.CurrentTimeZone.StandardName} / {TimeZoneInfo.Local.StandardName}");
await Task.Delay(TimeSpan.FromSeconds(1));
}

当我在程序运行时更改系统时区时,应用程序看不到更改。时区和时间就好像时区没有改变一样。

为了让应用程序显示新的时间和时区,我需要重新启动应用程序。

如果我更改系统时间,时间更改会立即生效。

如果你能帮我解决三个问题就太好了:

  • 这在任何地方都有记录吗?
  • 为什么在应用程序运行时没有选择时区更改?
  • 我可以做些什么让应用程序在运行时获取时区更改吗?

这是一个小屏幕截图,显示 .NET 应用程序使用与操作系统不同的时间: .NET App out of sync with system time.

顺便说一句。在 Raspberry Pi 上的 Windows IOT 上,我的实验表明,如果我重新启动应用程序,它将显示新时区,但显示“旧”时间。重新启动系统后将获取新时间。

最佳答案

可以查看以下msdn link .它清楚地说明了以下内容:

Notes to Callers: Local time zone data is cached after CurrentTimeZone is first used to retrieve time zone information. If the system's local time zone subsequently changes, the CurrentTimeZone property does not reflect this change. If you need to handle time zone changes while your application is running, use the TimeZoneInfo class and call its TimeZoneInfo.ClearCachedData method.

这在任何地方都有记录吗?是的,如上所述。

为什么在应用程序运行时没有获取时区更改?因为缓存了时区信息。

我可以做些什么让应用程序在运行时获取时区更改吗?是的,通过使用 TimeZoneInfo 类并调用其 TimeZoneInfo.ClearCachedData 方法。

关于c# - DateTime.Now 与系统时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44899112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com