这个问题已经有了答案:
.NET DateTime.Now returns incorrect time when time zone is changed
4答
我觉得这是一个很简单的问题,一定有人以前有过这个问题。要么我找不到正确的搜索关键词,要么没人遇到过这个问题。
我的问题是,当我进入windows系统时间并更改时区时,系统托盘时间会相应更新,但我正在运行的应用程序似乎完全忽略了这一事实。我尝试过的.NET对象似乎都没有反映系统时区已更改的事实。我在前后检查了以下对象,看它们是否发生了变化:

DateTime.Now;
DateTime.Now.Offset;
TimeZone.CurrentTimeZone.StandardName;

对于我来说,这是一个非常边缘的例子,即在应用程序的同一个电源周期中时区会发生变化,但无论如何,我必须解决它。有没有办法告诉.net framework“刷新时区”之类的?

最佳答案

查看该属性的文档:
http://msdn.microsoft.com/en-us/library/system.timezone.currenttimezone(v=vs.110).aspx
本地时区数据在首次使用currentTimeZone检索时区信息后缓存。如果系统的本地时区随后更改,则currentTimeZone属性不会反映此更改。如果在应用程序运行时需要处理时区更改,请使用TimeZoneinfo类并调用其TimeZoneinfo.ClearCachedData方法。

TimeZoneInfo local = TimeZoneInfo.Local;

TimeZoneInfo.ClearCachedData();
local = TimeZoneInfo.Local; //updated local time zone info

关于c# - 在重新启动之前,应用程序看不到系统时区更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23393730/

10-14 19:30
查看更多