You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python中Timedelta时长格式化为微秒等易读形式?

嘿,这个时间格式转换的需求很清晰,我来给你两种解决方案,一种是手动实现(不用装额外库),另一种是用第三方工具简化操作!

手动实现(无依赖)

首先,datetime.now() - startTime返回的是一个timedelta对象,它自带了seconds和microseconds属性,我们可以直接提取这些值来拼接成你想要的格式。根据你的例子,我写了一个适配的函数:

from datetime import datetime
import time

def format_timedelta_to_custom(td):
    # 处理小于1秒的情况,匹配你示例中的"2 microsecond"显示逻辑
    if td.seconds == 0:
        # 取微秒数的前三位(即毫秒值),对应你给出的示例格式
        ms = td.microseconds // 1000
        return f"{ms} microsecond"
    # 处理大于等于1秒的情况,拼接秒和毫秒值
    else:
        ms = td.microseconds // 1000
        return f"{td.seconds} second_{ms} microsecond"

# 测试一下
# 测试短耗时场景
start = datetime.now()
time.sleep(0.002)  # 模拟2毫秒的操作
elapsed = datetime.now() - start
print(format_timedelta_to_custom(elapsed))  # 输出:2 microsecond

# 测试长耗时场景
start = datetime.now()
time.sleep(20.912)  # 模拟20秒912毫秒的操作
elapsed = datetime.now() - start
print(format_timedelta_to_custom(elapsed))  # 输出:20 second_912 microsecond

如果想要严格按真实微秒显示(比如0.002秒实际是2000微秒),只需要把函数里的td.microseconds // 1000改成td.microseconds即可。

第三方库实现

如果你不想自己写逻辑,可以用humanize库,它专门用来把时间、数字转换成人类友好的格式。先安装它:

pip install humanize

然后使用:

import humanize
from datetime import datetime
import time

start = datetime.now()
time.sleep(0.002)
elapsed = datetime.now() - start
print(humanize.naturaldelta(elapsed))  # 输出:2 milliseconds

start = datetime.now()
time.sleep(20.912)
elapsed = datetime.now() - start
print(humanize.naturaldelta(elapsed))  # 输出:21 seconds(会自动四舍五入)

如果想要完全匹配你要的下划线格式,你可以结合humanize的基础方法自己调整,不过手动实现反而更直接。

内容的提问来源于stack exchange,提问作者rahul singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:56:01