我正在尝试创建一个任务经理,而日期无关紧要(日常再现(。
我试图在时间之间找到差异,例如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)
结束良好。
python的datetime
模块不允许您根据日期计算时间deltas。这可能导致歧义性,例如当总和大于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秒(,但应在其他计算中起作用。
要在几秒钟内获得答案,请这样修改您的代码:
return (datetime.datetime.combine(today, t1)-datetime.datetime.combine(today, t2)).total_seconds()