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

如何用JavaScript将秒数转换为hh:mm:ss格式?代码报错求助

解决JavaScript秒数转hh:mm:ss格式的TypeError问题

看起来你碰到的报错是因为你用的clearTime()、addSeconds(),还有带格式参数的toString('H:mm:ss')都不是原生JavaScript Date对象的自带方法——这些都是第三方日期处理库(比如Date.js、Moment.js这类)提供的API,如果没提前引入对应的库,浏览器自然会抛出TypeError啦。

给你两种靠谱的解决方案:

方案一:原生JavaScript实现(无需依赖外部库)

这是最稳妥的方式,不用额外引入任何库,直接自己计算时分秒并补零:

function secondsToHms(d) {
    // 处理负数情况(如果你的秒数可能为负的话)
    d = Math.abs(d);
    // 计算各时间单位
    const hours = Math.floor(d / 3600);
    const minutes = Math.floor((d % 3600) / 60);
    const seconds = Math.floor(d % 60);
    
    // 补零确保每个部分都是两位数,比如5秒变成"05"
    const formattedHours = hours.toString().padStart(2, '0');
    const formattedMinutes = minutes.toString().padStart(2, '0');
    const formattedSeconds = seconds.toString().padStart(2, '0');
    
    return `${formattedHours}:${formattedMinutes}:${formattedSeconds}`;
}

测试示例:

  • 输入3661,返回01:01:01
  • 输入65,返回00:01:05
  • 输入5,返回00:00:05

方案二:使用第三方日期库(如果一定要用库的话)

如果你坚持想用类似你原来的写法,得先引入对应的库,比如用Moment.js的话,代码可以改成这样:

// 记得先在页面引入Moment.js
function secondsToHms(d) {
    // 从一天的开始时间加上指定秒数,再格式化输出
    return moment().startOf('day').add(d, 'seconds').format('HH:mm:ss');
}

不过要注意,现在Moment.js已经处于维护状态,推荐使用更现代的库比如Day.js,用法和Moment.js基本一致。

你的buildList函数里调用secondsToHms(item.time)的逻辑是没问题的,只要替换成上面正确的secondsToHms实现,就能正常渲染时间啦。

内容的提问来源于stack exchange,提问作者j.doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:15:14