[英]Is there a way to format a timedelta object to be hours-minutes-seconds.MILLISECONDS?
我有这样的事情:
import datetime
a = datetime.datetime.now()
do_something_for_a_long_time()
b = datetime.datetime.now()
c = b - a
print("Doing <something> took {c}".format(c))
问题是这很好用,但我们希望秒值是形式,而不是微秒?
我能够从那个 timedelta object 中分离出毫秒属性,它似乎只有微秒可用。
鉴于您的初始代码示例,您可以使用如下内容:
# From your example.
c = b - a
# Get the hours, minutes, and seconds.
minutes, seconds = divmod(c.seconds, 60)
hours, minutes = divmod(minutes, 60)
# Round the microseconds to millis.
millis = round(c.microseconds/1000, 0)
print(f"Doing <something> took {hours}:{minutes:02}:{seconds:02}.{millis}")
这导致
# c = datetime.timedelta(seconds=7, microseconds=319673)
Doing <something> took 0:00:07.320
看看 Python 的内置函数round()和divmod()并请戳一下这个和这个相关的线程; 另外,请通读此主题和此主题以了解有关格式化timedelta对象的更多信息。
如果您不想手动四舍五入,只需去掉微秒的最后三位数字:
def format_time():
t = datetime.datetime.now()
s = t.strftime('%Y-%m-%d %H:%M:%S.%f')
return s[:-3] `def format_time():
t = datetime.datetime.now()
s = t.strftime('%Y-%m-%d %H:%M:%S.%f')
return s[:-3]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.