计算两个datetime.time实例之间的timedelta

时间:2017-06-26 13:03:19

标签: python datetime

我正在尝试创建一个具有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)结束得很好。

2 个答案:

答案 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()