首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示相同时间甚至时区更改的SystemEvent.TimeChange

显示相同时间甚至时区更改的SystemEvent.TimeChange
EN

Stack Overflow用户
提问于 2011-09-22 05:38:59
回答 2查看 1.8K关注 0票数 8

我已经写了这个简单的控制台应用程序来测试当我们在Windows7上使用设置日期时间窗口手动更改时区时,timechange事件是否被触发?答案是肯定的,它触发了,但我正在打印当前时间,它不能正确显示。

代码语言:javascript
复制
    static void Main(string[] args)
    {
        SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
        Console.Read();
    }

    static void SystemEvents_TimeChanged(object sender, EventArgs e)
    {
        Console.WriteLine(DateTime.Now);
    }

一旦你运行控制台应用程序,然后尝试更改时区,它总是反映一个时间更改,但它以某种方式坚持该时间,即使你将时区更改为不同的时区或相同的时区。

我是不是遗漏了什么?

为了验证系统时间是否已更改,我打开命令提示符,使用date和' time‘命令打印当前时间,并根据时区显示完美。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-22 05:44:55

我相信系统时区正在被缓存。不过,您可以清除此缓存:

代码语言:javascript
复制
TimeZoneInfo.ClearCachedData();

把它放在你的DateTime.Now调用之前,它看起来工作得很好。(无论如何,在我的机器上工作:)

编辑:正如注释中所述,在某些情况下,您似乎还需要调用CultureInfo.CurrentCulture.ClearCachedData()。我没有,但我敢说这样做没有坏处:)

票数 11
EN

Stack Overflow用户

发布于 2011-09-22 05:46:17

愚蠢的问题,但是你是在改变时间,还是仅仅是时区呢? 5:00是5:00,你改变了时区(并将计算机提前或推迟一两个小时)也不会改变系统时钟设置为5:00的事实。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7506997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档