我想计算两个日期之间的秒差。
def delta_seconds(datetime, origin):
td = datetime - origin # datetime - date
return float((td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 ** 6)) / 10 ** 6
我无法计算差异,它显示了这个错误:
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.datetime
所以,我想将 datetime.time 转换为 datetime.datetime。
(datetime 是一个 datetime.time obj 并且 origin 是一个 datetime.datetime obj)
有什么建议吗?
答案 0 :(得分:1)
两个不同的 datetime
相减已经返回一个增量。 timedelta
参数 origin
和 datetime
必须是 datetime
对象。将两个参数都设置为 datetime
对象,或者将 datetime.time
对象设置为当前 datetime` 对象。
为了将您的 time
转换为 datetime
,this 可能会有所帮助,或者您可以手动调整字段。
import datetime
t = datetime.time(1, 2, 3)
print('t :', t)
d = datetime.date.today()
print('d :', d)
dt = datetime.datetime.combine(d, t)
print('dt:', dt)
t : 01:02:03
d : 2013-02-21
dt: 2013-02-21 01:02:03
答案 1 :(得分:1)
datetime.datetime
对象之间的差异为您提供了 datetime.timedelta
,它已经有一个类属性,seconds
可以从您的函数中返回。datetime.combine
组合 datetime.date
和 datetime.time
。演示:
from datetime import datetime, date, time
def delta_seconds(end, origin):
return (end - origin).seconds
# Test
date = date(2021, 5, 3)
time = time(10, 20, 30)
origin = datetime.combine(date, time)
end = datetime.now()
print(delta_seconds(end, origin))
输出:
33213