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

在Bash中如何将无冒号的HHMMSS格式时间转换为秒数

实现HHMMSS格式时间转秒数的方案

方案1:兼容原有date命令逻辑(推荐,无需修改原有转换逻辑)

你只需要先把输入的6位HHMMSS格式字符串插入冒号,转换成原有逻辑支持的HH:MM:SS格式即可,用bash内置字符串操作即可完成,无需额外调用外部工具:

# 输入的HHMMSS格式时间,示例值可替换为你的变量
input_time=010000
# 插入冒号转换为HH:MM:SS格式
formatted_time="${input_time:0:2}:${input_time:2:2}:${input_time:4:2}"
# 调用原有逻辑转换为秒数
result=$(date -d "1970-01-01 $formatted_time Z" +%s)
echo $result

测试结果:

  • 输入010000输出3600,符合预期
  • 输入004032输出2432,符合预期

方案2:直接算术计算(性能更高,不依赖date命令)

如果不需要兼容date的其他逻辑,直接拆分字段计算秒数效率更高,同时要注意处理前导零导致的八进制解析问题:

input_time=004032
# 拆分字段,加10#强制按十进制解析,避免08/09这类值报语法错误
h=$((10#${input_time:0:2}))
m=$((10#${input_time:2:2}))
s=$((10#${input_time:4:2}))
# 直接计算总秒数
result=$((h * 3600 + m * 60 + s))
echo $result

可选:增加输入格式校验

可以加一层判断避免非法输入导致报错:

if [[ ! $input_time =~ ^[0-9]{6}$ ]]; then
    echo "输入错误,请传入6位HHMMSS格式的数字时间"
    exit 1
fi

内容的提问来源于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 13:15:03