首页 > 解决方案 > 为什么两个日期时间对象的差异如此之大?

问题描述

datetime1 = '2020-08-19 10:13:19'
datetime2 = '2020-08-19 19:00:00'

diff = datetime1 - datetime2

diff 是一个 timedelta 对象,具有:

diff.days = -1
diff.seconds = 54766 = 15.22 hours

两个日期时间之间只有大约 9 小时的差异。为什么显示天数是“1”和 15.22 小时?如何理解两个日期时间的差异?

标签: pythondatetime

解决方案


如果您从较晚的日期时间中减去较早的日期时间,您会得到一个正的时间增量,正如人们所期望的那样。

反过来,你会得到一个不寻常格式的负时间延迟。
但是当你计算时-1 day + 15 hours = -24 hours + 15 hours = -9 hours,结果是正确的。
当然,手动做这个计算不是我们想要的。

因此,要么避免从较早的日期时间中减去较晚的日期时间:

# to get an absolute timedelta
if datetime2 > datetime1:
    print(datetime2 - datetime1)
else:
    print(datetime1 - datetime2)

或使用.total_seconds()

print((datetime1 - datetime2).total_seconds())
-31601.0
print((datetime2 - datetime1).total_seconds())
31601.0

推荐阅读