我希望将165秒变成 2:40而不是0:2:45
该功能需要能够适应秒值的大小。
我知道有无限的方法可以做到这一点,但我正在寻找一种干净的方法,除了jQuery之外没有任何外部库。
答案 0 :(得分:4)
类似:[Math.floor(165/60),165%60].join(':')
应该有效。实际上,它是 2:45 ;〜)
[编辑]根据您的评论功能将秒转换为(零填充,小时修剪)hr:mi:se string
function hms(sec){
var hr = parseInt(sec/(60*60),10)
, mi = parseInt(sec/60,10)- (hr*60)
, se = sec%60;
return [hr,mi,se]
.join(':')
.replace(/\b\d\b/g,
function(a){
return Number(a)===0 ? '00' : a<10? '0'+a : a;
}
)
.replace(/^00:/,'');
}
alert(hms(165)); //=> 02:45
alert(hms(3850)); //=> 01:04:10
答案 1 :(得分:0)
检查此答案:Convert seconds to HH-MM-SS with JavaScript?
hours = totalSeconds / 3600;
totalSeconds %= 3600;
minutes = totalSeconds / 60;
seconds = totalSeconds % 60;
答案 2 :(得分:0)
尝试这样的事情(我已经包含填充格式将数字格式化为两个字符):
String.prototype.padLeft = function(n, pad)
{
t = '';
if (n > this.length){
for (i = 0; i < n - this.length; i++) {
t += pad;
}
}
return t + this;
}
var seconds = 3850;
var hours = Math.floor(seconds / 3600);
var minutes = Math.floor(seconds % 3600 / 60);
var time = [hours.toString().padLeft(2, '0'),
minutes.toString().padLeft(2, '0'),
(seconds % 60).toString().padLeft(2, '0')].join(':');