将秒转换为时:分:秒格式

31

可能是重复问题:
如何使用JavaScript将秒转换为HH-MM-SS?

你好,

我有一个浮点数16.4534,它是视频持续时间的秒数。我想将其转换为HH:MM:SS格式,看起来像00:00:16。

我已经搜索过了,但没有找到任何相关的内容。

我需要使用正则表达式吗?

非常感谢您的帮助。

提前致谢。

1个回答

119

function secondsToHms(d) {
    d = Number(d);

    var h = Math.floor(d / 3600);
    var m = Math.floor(d % 3600 / 60);
    var s = Math.floor(d % 3600 % 60);

    return ('0' + h).slice(-2) + ":" + ('0' + m).slice(-2) + ":" + ('0' + s).slice(-2);
}

document.writeln('secondsToHms(10) = ' + secondsToHms(10) + '<br>');
document.writeln('secondsToHms(30) = ' + secondsToHms(30) + '<br>');
document.writeln('secondsToHms(60) = ' + secondsToHms(60) + '<br>');
document.writeln('secondsToHms(100) = ' + secondsToHms(100) + '<br>');
document.writeln('secondsToHms(119) = ' + secondsToHms(119) + '<br>');
document.writeln('secondsToHms(500) = ' + secondsToHms(500) + '<br>');


3
我喜欢这个答案的简洁性,但是我结合了这个答案,修改前两行变成Number.prototype.toHHMMSS = function () { d = this;,使它更加简明扼要。 - alunsford3
1
不错 - 我修正了一个小错误,当 h > 0 且 m = 0 时,它没有将分钟填充为 00。我已将其作为对您答案的编辑提交,因为该问题已关闭,无法再添加新的答案。 - Matt
6
你可以使用 moment.js 库:moment().startOf('day').seconds(16.4534).format('HH:mm:ss'),非常简单。 - elquimista
2
如果秒数等于0,则返回0:00,而不是我期望的00:00:00。 - Douglas Gaskell
1
上面的答案可以通过条件返回值进行改进,像这样 `if (h > 0) { return ( ("0" + h).slice(-2) + ":" + ("0" + m).slice(-2) + ":" + ("0" + s).slice(-2) ); }return ("0" + m).slice(-2) + ":" + ("0" + s).slice(-2);` 避免在时间未到小时时出现00。 - Jokanola
省略不必要的部分的另一种选择是将值添加到数组中,然后使用冒号分隔符连接返回数组。 const parts = [('0' + s).slice(-2)]; if (m || (!m && h)) parts.unshift(('0' + m).slice(-2)); if (h) parts.unshift(('0' + h).slice(-2)); return parts.join(":"); - Justin S Barrett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接