简体   繁体   English

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

[英]Compute timedelta between two datetime.time instances

I'm trying to create a task manager with a spcefic time&task, while the date is irrelevant ( everyday reccurance ). 我正在尝试创建一个具有特定时间和任务的任务管理器,而日期却无关紧要(日常事务)。

I'm trying to find the diff between times, eg timedelta(hours=1) : 我试图找到时间之间的差异,例如timedelta(hours=1)

datetime.time(13,00,00) - datetime.time(14,00,00)

ended with failture: 以失败告终:

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

while datetime.date(2017,06,26) - datetime.date(2017,06,25) ends well. datetime.date(2017,06,26) - datetime.date(2017,06,25)结束得很好。

Python's datetime module doesn't let you calculate time deltas based on time-of-day only. Python的datetime模块不允许您仅基于一天中的时间来计算时间增量。 That can result in ambiguities such as what to do when a sum is greater than 24 hours. 这可能导致歧义,例如总和大于24小时时该怎么办。 In your case there is a hack that should work. 在您的情况下,应该可以使用一种hack。 Turn your times into datetime on the same day and do the math from there. 将您的时间转换为同一天的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)

Negative timedelta looks weird (that's -1 days plus 82800 seconds) but should work in other calculations. timedelta看起来很奇怪(即-1天加上82800秒),但应该在其他计算中起作用。

要在几秒钟内获得答案,请按如下所示修改您的代码:

return (datetime.datetime.combine(today, t1)-datetime.datetime.combine(today, t2)).total_seconds()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 'datetime.time' 和 'datetime.datetime' 的实例之间不支持 - not supported between instances of 'datetime.time' and 'datetime.datetime' 在“ datetime.time”和“ datetime.datetime”的实例之间不支持“&gt;” - '>' not supported between instances of 'datetime.time' and 'datetime.datetime' 在“ datetime.datetime”和“ datetime.time”的实例之间不支持“&gt; =” - '>=' not supported between instances of 'datetime.datetime' and 'datetime.time' Python 3-使用datetime.time对象-timedelta - Python 3 - Working with datetime.time objects - timedelta Pandas TypeError:“datetime.time”和“int”的实例之间不支持“&lt;” - Pandas TypeError: '<' not supported between instances of 'datetime.time' and 'int' 两次之间有多少小时?(不支持的操作数类型 - :'datetime.time'和'datetime.time') - How many hours between two time?(unsupported operand type(s) for -: 'datetime.time' and 'datetime.time') 比较python中的datetime.timedelta和datetime.time - comparing datetime.timedelta and datetime.time in python 在Python 3.4中将datetime.time转换为datetime.timedelta - Convert datetime.time into datetime.timedelta in Python 3.4 python pandas中两个datetime.time列之间的微秒差异? - Microsecond difference between two datetime.time columns in python pandas? TypeError: 不支持的操作数类型 +: &#39;Timedelta&#39; 和 &#39;datetime.time - python - TypeError: unsupported operand type(s) for +: 'Timedelta' and 'datetime.time - python
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM