This question already has answers here:
Make Python respond to Windows timezone changes
                                
                                    (3个答案)
                                
                        
                                6年前关闭。
            
                    
在Python应用程序中运行Windows XP,我得到了当前时间:

import datetime
now = datetime.datetime.now()


并且时间与系统时钟显示屏上的时间匹配。但是,现在,在应用程序仍在运行的情况下,我转到Windows时钟并选择“时区”并进行更改。现在,我再次使用上述方法获得时间,但是这次是不正确的,这给了我时间,好像我没有更改时区一样。

但是,如果我关闭该应用程序并重新启动它,然后获取时间,则它与时钟匹配。好像它“滞留”在应用程序首先加载的任何时区中。

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

为什么会这样,我该怎么做才能防止这种情况发生?

最佳答案

我的猜测是Python运行时在启动时读取系统时区,并使用UTC作为其基础。因此,当您更改时区而不更改时间时,Windows到Python都没有信号更改任何内容。我仍在研究python文档以证实这一假设。

有什么重要的理由吗?有人会假设系统时区的变化不是很频繁-或至少没有足够频繁地变化,以至于用户无法简单地重新启动应用程序。

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

您在使用pytz吗?或者只是连续的日期时间?

更新

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

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

10-12 00:31
查看更多