【发布时间】:2015-11-05 19:28:28
【问题描述】:
如何使用 python 计算事件的开始时间和结束时间之间的经过时间,格式为 00:00:00 和 23:59:59?
【问题讨论】:
标签: python
如何使用 python 计算事件的开始时间和结束时间之间的经过时间,格式为 00:00:00 和 23:59:59?
【问题讨论】:
标签: python
我不确定你如何使用 time 模块来做到这一点,但你可以使用 datetime 模块,在事件开始时获取结果 datetime.datetime.now() 并将其保存在变量中。
然后当事件再次结束时得到datetime.datetime.now() 并从中减去第一次。您将获得一个datetime.timedelta() 对象,您可以将其转换为str() 以获取所需格式的数据。
示例/演示 -
>>> d = datetime.datetime.now()
>>> d1 = datetime.datetime.now()
>>> str(d1 - d)
'0:00:06.989000'
>>> str(datetime.timedelta(0,84332,12332))
'23:25:32.012332'
如果您不想要微秒部分,您可以在 '.' 上使用 rsplit() 并获取第一部分,示例 -
>>> str(d1 - d).rsplit('.',1)[0]
'0:00:06'
>>> str(datetime.timedelta(0,84332,12332)).rsplit('.',1)[0]
'23:25:32'
【讨论】:
microsecond 部分(点之后)的部分。
time.time() 只是系统时间,仅此而已。 datetime 可能是一个计划,但如果你想 DIY,divmod 效果很好
def pretty_time(t):
"""takes a time, in seconds, and formats it for display"""
m, s = divmod(t, 60)
h, m = divmod(m, 60)
s = round(s) #Rounds seconds to the nearest whole number
h = str(h).rjust(2,'0') #covert to strings,
m = str(m).rjust(2,'0') #adding 0 if necessary to make
s = str(s).rjust(2,'0') #each one two digits long
return "{}:{}:{}".format(h,m,s)
然后只需调用
pretty_time(end_time-start_time)
(示例:
In [5]: pretty_time(3600)
Out[5]: '01:00:00'
In [6]: pretty_time(3500)
Out[6]: '00:58:20'
)
(请注意,我没有费心检查超过 24 小时的时间,那只会给你“25:45:21”之类的信息)
【讨论】: