【发布时间】:2021-09-16 22:50:37
【问题描述】:
我认为我误解了有关日期时间时间戳的内容。 我读过的描述似乎说时间戳代表 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
这些不应该是一样的吗?我误会了什么?
【问题讨论】:
-
我敢打赌你住在山区时区:-)
-
似乎正好相差 7 小时。您的时区是 UTC-7 吗?
-
实际上,
time2是正确的,因为两个输入日期时间对象都是幼稚的。问题是datetime.datetime.timestamp(date)做的比你想象的要多——它将给定的日期/时间从本地时间转换为 UTC,then 计算自 1970 年 1 月 1 日以来的秒数。这就是偏移量的来源。正如@wim 指出的那样,将 tzinfo 设置为 UTC,你会很高兴的。 -
注意:AFAIK total_seconds() 也不是总秒数(它忽略,AFAIK,闰秒)。 (这种注释在大多数情况下没有用,但是当有闰秒时,您可能会看到奇怪的东西)