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

如何在Bash中将毫秒转换为时长(不含日期)

Bash实现毫秒转时分秒.毫秒格式时长

要将文本文件中每行的毫秒值转换为HH:MM:SS.ss格式的时长,最直接高效的方式是使用awk工具——它能直接处理文本行并完成数值计算与格式化输出,完全无需涉及纪元时间或日期转换。

核心实现命令

针对你的milisecond.txt文件,执行以下命令即可完成转换:

awk '{
    ms = $1
    # 提取毫秒部分(取前两位)
    ms_segment = int((ms % 1000) / 10)
    # 计算总秒数
    total_seconds = int(ms / 1000)
    # 拆分秒、分、小时
    seconds = total_seconds % 60
    total_minutes = int(total_seconds / 60)
    minutes = total_minutes % 60
    hours = int(total_minutes / 60)
    # 格式化输出为两位数字,不足补0
    printf("%02d:%02d:%02d.%02d\n", hours, minutes, seconds, ms_segment)
}' milisecond.txt

输出结果示例

针对你提供的输入文件内容:

169920
269320
163920
1339520

执行命令后会输出:

00:02:49.92
00:04:29.32
00:02:43.92
02:13:15.52

备选方法(date工具,注意局限性)

如果你想用date工具辅助转换,可使用以下循环命令,但该方法仅适用于毫秒数不超过一天(86400000毫秒)的场景,超过后会出现日期循环:

while read ms; do
    # 用date生成时分秒部分,再拼接毫秒前两位
    date -u -d "@$((ms/1000))" +"%H:%M:%S" | awk -v ms_part="$((ms%1000))" '{print $0 "." int(ms_part/10)}'
done < milisecond.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:04:56