在Python中计算时间(datetime.timedelta?)

10

我相信对于很多人来说这都不是什么难事,但我发现自己在处理datetime.timedelta时有些困惑。基本上,我会在开始时记录某个时间戳startTime,然后在进程结束时记录另一个时间戳endTime,并且我想要计算它们之间的HH:MM:SS的差异,但一直无法成功。

当我执行print endTime - startTime时,会出现以下错误:

TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

编辑以包括最终结果:

startTime = datetime.now()
<... my looping process ...>
endTime = datetime.now()
calcdTime = endTime - startTime
print str(calcdTime)[:-4]

这将输出:H:MM:SS.MM(因此从timedelta中删除最后4个字符)。


1
datetime.datetimedatetime.date支持减法运算,但是datetime.time不支持。请尝试使用datetime.datetime代替。 - Rafe Kettler
2个回答

10

使用datetime而不是time。从一个时间减去另一个时间没有日期是毫无意义的;你不能仅仅假设它们在同一天且左操作数在前。


5

根据您对信息的处理方式,您可能只需要使用time.time

import time

starttime = time.time()

# do stuff

endtime = time.time()

elapsed = endtime - starttime
print elapsed

这将给出经过的时间(以秒为单位)。这通常比有一个 timedelta 更方便。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接