背景
我一直无法找到有关Python使用的时间值的真正来源的更深层解释。大多数文档都指出,它“从CPython中获得价值”,但未详细说明其价值所在。
一些国家最近已更改或正在考虑更改其DST政策。这意味着在这些国家/地区的设备可能会自动调整时区,并产生不正确的基于GMT的时间,直到使用当前策略更新它们为止。
这本身并不可怕,因为操作系统通常具有强大的更新机制。但是,有时在那些相同的系统上更新Python是一个非常模糊的领域。操作系统可以处理它,或者Python与应用程序捆绑在一起。也许操作系统仍在获取重要更新,但没有Python更新。
问题/问题
我们不控制如何使用我们的代码更新Python。令人担忧的是,由于GMT时间计算已过期,我们可能会从Python中获得不正确的unix-time-stamp。
如果Python将GMT时间计算委托给OS,那么我们可以放轻松。如果Python没有委托它,那么我们可能不得不强制该值来自操作系统(例如time +%s)。
所以问题是:Python3是从操作系统获取GMT时间还是从本地时间获取其自己的计算时间?
答案 0 :(得分:2)
Python不会保留自己的时区信息数据库;它委托OS和/或pytz第三方程序包进行所有与时区相关的计算。通过平台gmtime_*()
的C localtime_*()
和time.h
函数从操作系统中获取UTC或本地时间戳。
有关源代码的完整故事,请查看datetime模块的Python version,相同的C version,time module和pytime.c C模块。