有没有办法将timedelta对象的格式设置为HoursMinuteSeconds.毫秒?

2024-09-24 22:31:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的想法:

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对象中分离出毫秒属性,它似乎只有微秒可用


Tags: importformatfordatetimetimedonowsomething
2条回答

给出初始代码示例,您可以使用如下内容:

# 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(),请浏览一下与thisthis相关的线程;另外,请通读thisthis线程以了解有关格式化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]

相关问题 更多 >