datetime.timestamp 与 1970 年以来的秒数不同

datetime.timestamp not the same as seconds since 1970

我想我对日期时间戳有一些误解。 我读过的描述似乎说时间戳代表 Unix 时间(自 1970 年以来的秒数)

但是当我运行以下

import datetime
date = datetime.datetime(2020, 1 , 1, 0, 0, 0)

time1 = datetime.datetime.timestamp(date)
time2 = (date - datetime.datetime(1970,1,1,0,0,0)).total_seconds()

print(time1)
print(time2)

它打印:

1577862000.0
1577836800.0

这些不应该是一样的吗?我误会了什么?

时区。 unix 纪元是 1970 年 1 月 1 日 UTC,但您的本地区域不是 UTC,因此当您使用 datetime.datetime(1970,1,1,0,0,0) 创建“天真的”日期时间实例时,它与真正的 unix 有偏差纪元几个小时。

tzinfo=datetime.timezone.utc 附加到两个创建的日期时间实例,您将看到相等。

或者,使用 datetime.datetime.fromtimestamp(0) 而不是 datetime.datetime(1970,1,1,0,0,0) 来获得与纪元重合的“原始”日期时间实例。