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

使用moment.js将不足1分钟时长强制格式化为hh:mm:ss格式的问题咨询

解决方案

你遇到的两个问题都可以通过配置moment-duration-format插件的格式化参数结合输入预处理解决,无需手动拼接字符串:

1. 异常输出修复(负时长/小于1秒输出毫秒)

首先对输入的时长值做非负钳位,避免负时长传入导致异常;同时在格式化参数中指定最小单位为秒,阻止插件输出毫秒级文本:

// 对输入值做非负处理,小于0的时长统一按0计算
let tkd = moment.duration(Math.max(0, trackLength));
let prg = moment.duration(Math.max(0, trackProgress));

2. 不足1分钟补前导零

调用format方法时添加配置项,指定仅裁剪小时位的前导零,分钟位强制保留:

const formatConfig = {
  trim: 'left', // 仅裁剪左侧的前导零
  stopTrim: 'm', // 裁剪到分钟单位就停止,不会裁剪分钟位的前导零
  smallestUnit: 'seconds' // 最小展示单位为秒,小于1秒统一显示00
}
let fin = prg.format("hh:mm:ss", formatConfig) + ' / ' + tkd.format("hh:mm:ss", formatConfig);

效果验证

  • 进度32秒、总时长5分55秒:输出 00:32 / 05:55
  • 进度2分40秒、总时长5分55秒:输出 02:40 / 05:55
  • 进度1小时2分3秒、总时长1小时30分:输出 01:02:03 / 01:30:00
  • 负时长输入:统一按0处理,输出 00:00 无异常毫秒文本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:09:00