更改Windows时区后时间戳不正确



运行Windows XP,在Python应用程序中,我使用:

获取当前时间
import datetime
now = datetime.datetime.now()

时间与系统时钟显示的时间匹配。但是,现在,应用程序仍在运行,我转到Windows时钟,选择时区并更改它。现在我再次使用上面的方法获得时间,这次它是不正确的——它给我的时间就好像我没有更改时区一样。

但是如果我关闭应用程序并重新启动它,然后获得时间,那么它与时钟匹配。这就好像它被"卡"在应用程序首先加载的任何时区。

有趣的是,这只会在时区改变时发生;如果我只更改时间(而不是时区),那么更改将在应用程序中正确更改。

这是为什么?我能做些什么来预防它?

我猜Python运行时在启动时读取系统时区,并使用UTC作为其基础。因此,当您更改时区而不更改时间时,Windows不会向Python发出更改任何内容的信号。我仍在查阅python文档来证实这个假设。

有什么重要的原因吗?您可以假设系统时区不会经常更改—或者至少不会频繁到用户无法简单地重新启动应用程序。

即使它为真,你也可以从Python调用更新缓存的时区值。

你在用pytz吗?或者只是单纯的约会?

这是以前报道过的,其他问题也有合理的解决方案。

相关内容

  • 没有找到相关文章

最新更新