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)
来获得与纪元重合的“原始”日期时间实例。
我想我对日期时间戳有一些误解。 我读过的描述似乎说时间戳代表 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)
来获得与纪元重合的“原始”日期时间实例。