gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:11 32 4
gpt4 key购买 nike

在 Python 应用程序中运行 Windows XP,我可以通过以下方式获取当前时间:

import datetime
now = datetime.datetime.now()

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

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

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

为什么会出现这种情况?我可以采取什么措施来防止这种情况发生?

最佳答案

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

这有什么重要的理由吗?人们会假设系统时区不会经常更改 - 或者至少不会经常更改,以至于您的用户无法简单地重新启动应用程序。

即使这是真的,您也可能可以从 Python 进行调用来更新缓存的时区值。

你在使用 pytz 吗?或者只是直接的日期时间?

更新

这已经是reported before ,另外一个问题也有合理的解决方案。

关于Python:更改 Windows 时区后时间戳不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15756574/

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