Python 3.7 自 2019 年 4 月以来错误的 Unix 时间戳
Wrong Unix timestamp since April 2019 in Python 3.7
如果,在Python3.7下:
from datetime import datetime
datetime(2019, 4, 1).timestamp()
我正在 1554073200.0
。根据 https://www.unixtimeconverter.io/list/2019/april,不应该是 1554076800.0
(即再多 1 小时)吗?
我在 2019 年 4 月 1 日之后才收到此错误。例如,如果我尝试:
datetime(2019, 3, 31).timestamp()
我得到 1553990400.0
,我相信这是预期的结果。
我正在使用 Spyder 3.3.6。感谢您的帮助
问题是您的日期时间是 "naïve"。它不知道它所在的时区。 timestamp
方法(如文档中指定)假设您需要本地时区,在您的情况下,它在 2019 年 3 月 31 日有 DST 更改。要获得答案你想要,你需要设置时区。例如,
from datetime import datetime, timezone
d = datetime(2019,4,1, tzinfo=timezone.utc)
d.timestamp()
如您所料1554076800.0
。
如果,在Python3.7下:
from datetime import datetime
datetime(2019, 4, 1).timestamp()
我正在 1554073200.0
。根据 https://www.unixtimeconverter.io/list/2019/april,不应该是 1554076800.0
(即再多 1 小时)吗?
我在 2019 年 4 月 1 日之后才收到此错误。例如,如果我尝试:
datetime(2019, 3, 31).timestamp()
我得到 1553990400.0
,我相信这是预期的结果。
我正在使用 Spyder 3.3.6。感谢您的帮助
问题是您的日期时间是 "naïve"。它不知道它所在的时区。 timestamp
方法(如文档中指定)假设您需要本地时区,在您的情况下,它在 2019 年 3 月 31 日有 DST 更改。要获得答案你想要,你需要设置时区。例如,
from datetime import datetime, timezone
d = datetime(2019,4,1, tzinfo=timezone.utc)
d.timestamp()
如您所料1554076800.0
。