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

如何修改JS音频时长转换代码 实现输出00:00:00时分秒格式

解答

实现难度

极低,仅需删除1行代码即可实现需求,你现有逻辑已经完成了时、分、秒的数值计算,只是输出规则做了前导零位的截断。

问题根源

你写的toHHMMSS格式化函数里,下面这行过滤逻辑会自动移除数组开头值为"00"的项:

.filter((v,i) => v !== "00" || i > 0)

当音频总时长不足1小时,计算得到的小时数为"00"时,这行代码会直接把小时位从输出结果里删掉,最终就只返回分:秒的短格式。

修改方法

直接删掉上面那行filter调用即可。你之前的map逻辑已经给时、分、秒三个数值都做了不足两位补前导零的处理,保留三个数组项直接用冒号拼接,就能得到固定长度的时:分:秒格式。
修改后的完整代码:

var audio_url_raw = document.querySelector('.acf-fields.-top div#url.acf-field.acf-field-text.acf-field-60db6e20efbb0 div.acf-input div.acf-input-wrap input');
var au = document.createElement('audio');
au.src = audio_url_raw.value;
au.addEventListener('loadedmetadata', function(){
    var toHHMMSS = (secs) => {
        var sec_num = parseInt(secs, 10)
        var hours   = Math.floor(sec_num / 3600)
        var minutes = Math.floor(sec_num / 60) % 60
        var seconds = sec_num % 60
        return [hours,minutes,seconds]
            .map(v => v < 10 ? "0" + v : v)
            .join(":")
    }
    var duration = au.duration;
    $(".acf-fields.-top div#duration.acf-field.acf-field-text.acf-field-60db6e92efbb2 div.acf-input div.acf-input-wrap input").val(toHHMMSS(duration));
},false);

输出示例

  • 时长42秒:输出00:00:42
  • 时长5分17秒:输出00:05:17
  • 时长2小时12分3秒:输出02:12:03

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:51:24