您不能减去 time 实例,因为它们没有明确的顺序; 12.00 和 13.00 有什么区别?一小时?如果我现在告诉你我的意思是昨天 12.00 和明天 13.00 怎么办?因此错误:
>>> from datetime import date, time, datetime
>>> t1 = time(12, 00)
>>> t2 = time(13, 00)
>>> t1 - t2
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
t1 - t2
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
您需要知道时间发生在哪一天来计算差异。您需要通过combining them 使用适当的date 将它们转换为datetime 对象:
>>> dt1 = datetime.combine(date(2015, 7, 14), t1)
>>> dt2 = datetime.combine(date(2015, 7, 16), t2)
现在你可以减去它们:
>>> dt2 - dt1
datetime.timedelta(2, 3600) # two days, 3,600 seconds
如果他们在同一天(或者您假设他们在同一天),那么通常* 哪一天并不重要,因此您可以这样做,例如
>>> datetime.combine(date.today(), t2) - datetime.combine(date.today(), t1)
datetime.timedelta(0, 3600) # one hour
* (即忽略时钟变化、闰秒……)