小编典典

如何计算两个时间字符串之间的时间间隔

all

我有两个时间,一个开始时间和一个停止时间,格式为 10:33:26 (HH:MM:SS)。我需要两次之间的差异。我一直在查看 Python
的文档并在线搜索,我想这与 datetime 和/或 time 模块有关。我无法让它正常工作,并且只在涉及日期时才继续寻找如何做到这一点。

最终,我需要计算多个持续时间的平均值。我得到了工作时差,我将它们存储在一个列表中。我现在需要计算平均值。我正在使用正则表达式来解析原始时间,然后进行差异处理。

对于平均,我应该转换为秒然后平均吗?


阅读 70

收藏
2022-06-11

共1个答案

小编典典

是的,这绝对datetime是您需要的。具体来说,datetime.strptime()将字符串解析为datetime对象的方法。

from datetime import datetime
s1 = '10:33:26'
s2 = '11:15:49' # for example
FMT = '%H:%M:%S'
tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)

这将为您提供一个timedelta包含两次之间差异的对象。你可以用它做任何你想做的事情,例如将其转换为秒或将其添加到另一个datetime.

如果结束时间早于开始时间,这将返回否定结果,例如s1 = 12:00:00and s2 = 05:00:00。如果您希望代码在这种情况下假设间隔跨越午夜(即它应该假设结束时间永远不会早于开始时间),您可以在上面的代码中添加以下行:

if tdelta.days < 0:
    tdelta = timedelta(
        days=0,
        seconds=tdelta.seconds,
        microseconds=tdelta.microseconds
    )

(当然你需要包括from datetime import timedelta某处)。感谢 JF Sebastian 指出这个用例。

2022-06-11