不同机器之间的 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"
一般来说,支持 %Z
的 strptime
的 posix 实现将仅支持 UTC
、GMT
或系统 tzname
(在 time.tzname
的 python 中可用)。但是它不会根据它们return改变return值。
所以基本上我有一个获取 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"
一般来说,支持 %Z
的 strptime
的 posix 实现将仅支持 UTC
、GMT
或系统 tzname
(在 time.tzname
的 python 中可用)。但是它不会根据它们return改变return值。