在两个dateTime.time实例之间计算时间码



我正在尝试创建一个任务经理,而日期无关紧要(日常再现(。

我试图在时间之间找到差异,例如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()

相关内容

最新更新