自2019年4月以来在Python 3.7中错误的Unix时间戳

时间:2019-09-17 14:44:54

标签: python-3.x unix-timestamp

如果在Python 3.7下:

from datetime import datetime
datetime(2019, 4, 1).timestamp()

我得到1554073200.0。根据{{​​3}},应该不是1554076800.0吗(也就是1小时)?

仅在2019年4月1日之后才出现此错误。例如,如果我尝试:

datetime(2019, 3, 31).timestamp()

我得到1553990400.0,我相信这是预期的结果。

我正在使用Spyder 3.3.6。谢谢您的帮助

1 个答案:

答案 0 :(得分:1)

问题在于您的日期时间是“天真”的。它不知道它所在的时区。timestamp方法(如文档中所指定)假设您需要本地时区,在您的情况下,该时区在2019年3月31日更改为夏令时。获取答案您需要设置时区。例如,

from datetime import datetime, timezone
d = datetime(2019,4,1, tzinfo=timezone.utc)
d.timestamp()

这将为您带来1554076800.0的期望。