Python3 是否可以免受可能即将到来的 DST 更改的影响?

Is Python3 safe from DST changes that may be coming?

背景

对于 Python 使用的时间值的真正来源,我一直无法找到更深入的解释。大多数文档都指出它 'gets the value from CPython' 但没有详细说明它来自何处。

一些国家/地区最近更改了或正在寻求更改其 DST 政策。这意味着这些国家/地区的设备可能会自动调整时区并产生不正确的基于 GMT 的时间,直到它们根据当前政策进行更新。

这本身并不可怕,因为操作系统通常有一个很好的更新机制。然而,在这些相同的系统上更新 Python 有时是一个非常模糊的领域。 OS 可以处理它,或者 Python 可能与应用程序捆绑在一起。也许 OS 仍在获得关键更新,但没有 Python 更新。

问题/问题

我们无法控制 Python 如何使用我们的代码进行更新。值得关注的是,由于 GMT 时间计算已过时,我们可能会从 Python 获得不正确的 unix 时间戳。

如果Python将GMT时间计算委托给OS,那我们就可以高枕无忧了。如果 Python 不委托它,那么我们可能不得不强制值来自 OS (例如 time+%s)。

所以问题是:Python3 是从 OS 还是从它自己基于本地时间的计算得到 GMT 时间?

Python 不保留自己的时区信息数据库;它将所有与时区相关的计算委托给 OS and/or pytz 第三方包。 UTC 或本地时间戳通过平台的 time.h.

中的 C gmtime_*()localtime_*() 函数从 OS 获取

有关源代码中的完整故事,请查看 Python version of the datetime module, the C version of the same, the time module, and the pytime.c C 模块。