2017-03-06 97 views
0

所以基本上我有一个公式得到UNIX时间,但我得到10800,而不是0,在我的Ubuntu的机器(在我的Mac它工作得很好):不一致strptime进行的跨不同的机器

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

我见过几个不同的问题,但没有一个给我带来任何见解。

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

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

听起来像是一个时区问题。 – user2357112

+0

请参阅编辑,它不是 –

+1

'datetime.datetime'实际上并没有采用您试图传递它的参数。 'time.strptime'的[output](https://docs.python.org/3/library/time.html#time.struct_time)实际上并不匹配'datetime.datetime' [查找]的内容( https://docs.python.org/3/library/datetime.html#datetime.datetime)。 (你*也*仍然可能有时区问题,无论指定'UTC'到'strptime'。) – user2357112

回答

1

明确的答案时区的问题。 time.strptime,依靠posix strptime返回所有情况下的本地时间。

请仔细阅读strptime的文档,你会注意到,虽然%Z支持的格式字符“字段的解析,但tm没有域改变

一般来说,一个POSIX实现strptime确实支持%Z将只支持UTC,GMT或系统tzname(可从time.tzname以python获得)的值。但是它不会改变基于它们的返回值

相关问题