最有效/最短的方式采取X秒并将其变为h:m:s

时间:2011-05-26 06:33:58

标签: javascript jquery date

我希望将165秒变成 2:40而不是0:2:45

该功能需要能够适应秒值的大小。

我知道有无限的方法可以做到这一点,但我正在寻找一种干净的方法,除了jQuery之外没有任何外部库。

3 个答案:

答案 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(':');