Javascript 秒到分钟和秒

2022-08-30 00:47:34

这是一个常见问题,但我不确定如何解决它。下面的代码工作正常。

var mind = time % (60 * 60);
var minutes = Math.floor(mind / 60);
         
var secd = mind % 60;
var seconds = Math.ceil(secd);

但是,当我到达1小时或3600秒时,它返回0分钟和0秒。我该如何避免这种情况,以便它返回所有分钟?


答案 1

要获取完整分钟数,请将总秒数除以 60(60 秒/分钟):

var minutes = Math.floor(time / 60);

要获得剩余的秒数,请将完整分钟数乘以 60,然后从总秒数中减去:

var seconds = time - minutes * 60;

现在,如果您还想获得完整的小时数,请先将总秒数除以 3600(60 分钟/小时 · 60 秒/分钟),然后计算剩余秒数:

var hours = Math.floor(time / 3600);
time = time - hours * 3600;

然后计算完整分钟和剩余秒数。

奖金:

使用以下代码漂亮地打印时间(Dru建议)

function str_pad_left(string,pad,length) {
    return (new Array(length+1).join(pad)+string).slice(-length);
}

var finalTime = str_pad_left(minutes,'0',2)+':'+str_pad_left(seconds,'0',2);

答案 2

另一个花哨的解决方案:

function fancyTimeFormat(duration)
{   
    // Hours, minutes and seconds
    var hrs = ~~(duration / 3600);
    var mins = ~~((duration % 3600) / 60);
    var secs = ~~duration % 60;

    // Output like "1:01" or "4:03:59" or "123:03:59"
    var ret = "";

    if (hrs > 0) {
        ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
    }

    ret += "" + mins + ":" + (secs < 10 ? "0" : "");
    ret += "" + secs;
    return ret;
}

~~是 的简写,请参阅此链接以获取更多信息Math.floor

在线试用