我正在尝试创建一个具有spcefic时间和任务的任务管理器,而日期则无关紧要(每天的重复)。
我试图找到时间之间的差异,例如timedelta(hours=1)
:
datetime.time(13,00,00) - datetime.time(14,00,00)
以失败告终:
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
虽然datetime.date(2017,06,26) - datetime.date(2017,06,25)
结束得很好。
答案 0 :(得分:4)
Python的datetime
模块不允许您仅根据时间计算时间增量。这可能导致模糊,例如当总和超过24小时时该怎么做。在你的情况下,有一个应该工作的黑客。在同一天将您的时间转换为datetime
并从那里进行数学计算。
>>> def time_diff(t1, t2):
... today = datetime.date.today()
... return (datetime.datetime.combine(today, t1)
... - datetime.datetime.combine(today, t2))
...
>>>
>>> time_diff(datetime.time(13,0,0), datetime.time(14,0,0))
datetime.timedelta(-1, 82800)
否定timedelta
看起来很奇怪(那是-1天加上82800秒),但应该在其他计算中有效。
答案 1 :(得分:1)
要在几秒钟内得到答案,请修改您的代码:
return (datetime.datetime.combine(today, t1)-datetime.datetime.combine(today, t2)).total_seconds()