不同机器之间的 strptime 不一致

Inconsistent strptime accross different machines

所以基本上我有一个获取 UNIX 时间的公式,但我在我的 Ubuntu machine 中得到 10800,而不是 0(在我的 mac 它工作得很好):

datetime.datetime(*time.strptime("01.01.1970","%d.%m.%Y")).timestamp()
>> 10800.0

我看到了几个不同的问题,但是 none 给我带来了任何见解。

我认为这不是时区问题,因为:

datetime.datetime(time.strptime("01.01.1970.UTC", "%d.%m.%Y.%Z").timestamp()
>> 10800.0

UNIX 时间完全取决于时区,您可以在这里找到明确的答案en.wikipedia.org

时区问题。 time.strptime,它在所有情况下都依赖于 posix strptime return 的当地时间。

请仔细阅读 strptime 的文档,您会注意到虽然 %Z 支持作为格式字符 "fields are parsed, but no field in tm is changed"

一般来说,支持 %Zstrptime 的 posix 实现将仅支持 UTCGMT 或系统 tzname(在 time.tzname 的 python 中可用)。但是它不会根据它们return改变return值