我有两个时间,一个开始时间和一个停止时间,格式为 10:33:26 (HH:MM:SS)。我需要两个时间之间的差异。我一直在浏览 Python 文档并在线搜索,我想它可能与日期时间和/或时间模块有关。我无法让它正常工作,并且只在涉及约会时寻找如何做到这一点。
最终,我需要计算多个持续时间的平均值。我有工作时差,并将它们存储在列表中。我现在需要计算平均值。我使用正则表达式解析出原始时间,然后进行差异。
对于平均,我应该转换为秒然后平均吗?
当然是datetime http://docs.python.org/library/datetime.html就是你需要的。具体来说,datetime.strptime()
方法,它将字符串解析为datetime
object.
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
包含两个时间之间差异的对象。你可以用它做任何你想做的事,例如将其转换为秒 https://docs.python.org/3/library/datetime.html#datetime.timedelta.total_seconds或将其添加到另一个datetime
.
例如,如果结束时间早于开始时间,这将返回负结果s1 = 12:00:00
and s2 = 05:00:00
。如果您希望代码在这种情况下假设间隔跨越午夜(即,它应该假设结束时间永远不会早于开始时间),您可以将以下行添加到上面的代码中:
if tdelta.days < 0:
tdelta = timedelta(
days=0,
seconds=tdelta.seconds,
microseconds=tdelta.microseconds
)
(当然你需要包括from datetime import timedelta
某处)。感谢 J.F. Sebastian 指出了这个用例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)