当前位置:  开发笔记 > 运维 > 正文

.NET DateTime.Now返回时区更改时的错误时间

如何解决《.NETDateTime.Now返回时区更改时的错误时间》经验,为你挑选了1个好方法。

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



1> Hans Passant..:

是的,缓存当前时区.有充分的理由,它避免了使用DateTime.Now来实现经过时间测量的破坏代码的麻烦.当时间突然变化一小时或更长时,这样的代码往往会遭受心脏病发作.

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


`SystemEvents.TimeChanged + =(sender,args)=> System.Globalization.CultureInfo.CurrentCulture.ClearCachedData();`
推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有