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

在Bash中如何将HH:MM:SS格式的时间转换为对应的总秒数

HH:MM:SS格式时间转总秒数实现方案

你之前使用的date -d$element +%s默认会将输入的时间识别为当前日期的对应时间点,返回的是Unix时间戳(1970-01-01到该时间点的总秒数),因此不符合需求。下面提供多种可用实现:

方法1:调整date命令参数实现

GNU Linux 环境(绝大多数发行版默认)

指定基准时间为UTC时区的1970-01-01,此时返回的时间戳就是对应时分秒的总秒数:

element="00:25:56"
date -d "UTC 1970-01-01 $element" +%s
# 输出:1556

macOS 环境

macOS自带的date命令参数和GNU版本不同,使用如下写法:

element="01:00:00"
date -j -u -f "%H:%M:%S" "$element" +%s
# 输出:3600

方法2:使用awk拆分计算

兼容性更强,不受不同系统date命令实现差异的影响:

element="00:25:56"
awk -F: '{print $1*3600 + $2*60 + $3}' <<< "$element"
# 输出:1556

方法3:纯Shell内置命令实现

无需调用外部工具,执行效率更高,同时添加了十进制强制解析避免0开头的数字被识别为八进制报错:

element="00:25:56"
IFS=: read h m s <<< "$element"
total_seconds=$((10#$h * 3600 + 10#$m * 60 + 10#$s))
echo $total_seconds
# 输出:1556

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:39:01