计算两个 datetime.time 实例之间的时间增量

Guy*_*. D 3 python datetime

我正在尝试创建一个具有特殊时间和任务的任务管理器,而日期无关紧要(每天重复)。

我试图找到时间之间的差异,例如timedelta(hours=1)

datetime.time(13,00,00) - datetime.time(14,00,00)
Run Code Online (Sandbox Code Playgroud)

以失败告终:

Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
Run Code Online (Sandbox Code Playgroud)

虽然datetime.date(2017,06,26) - datetime.date(2017,06,25)结束得很好。

tde*_*ney 6

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)
Run Code Online (Sandbox Code Playgroud)

负数timedelta看起来很奇怪(即 -1 天加 82800 秒),但应该适用于其他计算。