3

为什么不能减去两个时间对象?例如,12:00 - 11:00 = 1:00


from datetime import time
time(12,00) - time(11,00) # -> timedelta(hours=1)

好像datetime.time.__sub__不见了

TypeError: 不支持的操作数类型 -: 'datetime.time' 和 'datetime.time'

你知道为什么吗?

4

2 回答 2

6

time对象没有日期,例如,可能12:00(比如说)在星期三,而11:00在前一个星期二,差异是 25 小时,而不是一个(可以添加或减去 24 的任何倍数)。如果您知道它们实际上在同一日期,只需对它们中的每一个应用任意日期(制作两个datetime对象),然后您就可以减去它们。例如:

import datetime

def timediff(t1, t2):
  td = datetime.date.today()
  return datetime.datetime.combine(td, t1) - datetime.datetime.combine(td, t2)
于 2010-01-16T23:26:05.480 回答
0

您可以通过以下方式获得您想要的结果

t1 = time(12, 0)
t2 = time(11, 0)
td = timedelta(hours=t1.hour-t2.hour, minutes=t1.minute-t2.minute)
于 2010-01-16T23:28:41.490 回答