在python的datetime中,当我使用两种不同的方法(使用timestamp()或total_seconds())计算两个日期之间的秒数时,会得到不同的结果。这是为什么?或者我做错了什么?这是我的意思的一个例子。

t1=dt.datetime(1970,6,12,0,0,0)
t2=dt.datetime(1970,1,1,0,0,0)

print(t1.timestamp()-t2.timestamp())
print((t1-t2).total_seconds())

我得到的答案是:
一千三百九十九万三千二百
一千三百九十九万六千八百

最佳答案

这种差异是由夏令时引起的。如果其中一个日期落在时区的DST范围内,而另一个不在时区的DST范围内,则在计算时会出现一个1小时的误差。
从1966年到1973年,DST in the United States ran from the last Sunday in April to the last Sunday in October,这解释了@JoshuaRLi's findings
看起来,当减去两个日期时,它没有注意DST差异;t1 - t2产生了162天的差异,尽管从技术上讲,小时的差异是162*24-1小时(DST跳过的-1)。datetime.timedelta(162)正在处理此问题(这两个时间戳都是相对于UTC的,因此DST时间戳正确地显示为一个小时之前,因为有一个小时被跳过来生成它)。

关于python - 评估时间戳和total_seconds之间的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45602652/

10-12 20:14