gpt4 book ai didi

时区更改时.NET DateTime.Now 返回不正确的时间

转载 作者:行者123 更新时间:2023-12-03 07:34:08 28 4
gpt4 key购买 nike

此问题发生在夏令时更改期间。更改发生后,我们注意到我们的服务器应用程序开始写入日志的时间不正确 - 提前一小时,这意味着 .NET 缓存时区偏移。我们必须重新启动应用程序才能解决此问题。我编写了一个简单的应用程序来重现这个问题。当我在应用程序运行时更改时区时,DateTime.Now 属性会继续生成旧时区的时间。有谁知道除了重新启动应用程序之外是否有解决此问题的方法?

最佳答案

是的,当前时区已缓存。出于充分的原因,它避免了使用 DateTime.Now 实现耗时测量的损坏代码的问题。当时间突然改变一个小时或更长时间时,这样的代码往往会心脏病发作。

您必须调用 System.Globalization.CultureInfo.ClearCachedData() 来重置缓存值。下一次调用 DateTime.Now 现在将给出新的本地时间。如果您完全使用 .NET 3.5 TimeZoneInfo 类,那么您还需要调用其 ClearCachedData() 方法。您可以使用 SystemEvents.TimeChanged 事件作为触发器。

关于时区更改时.NET DateTime.Now 返回不正确的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/296918/

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