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

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

然而,当我到达1小时或3600秒时,它返回0分和0秒。我如何避免这种情况,让它返回所有的分钟?


当前回答

另一种更优雅的解决方案如下:

/**
 * Convert number secs to display time
 *
 * 65 input becomes 01:05.
 *
 * @param Number inputSeconds Seconds input.
 */
export const toMMSS = inputSeconds => {
    const secs = parseInt( inputSeconds, 10 );
    let minutes = Math.floor( secs / 60 );
    let seconds = secs - minutes * 60;

    if ( 10 > minutes ) {
        minutes = '0' + minutes;
    }
    if ( 10 > seconds ) {
        seconds = '0' + seconds;
    }

    // Return display.
    return minutes + ':' + seconds;
};

其他回答

试试这个: 将秒转换为小时,分钟和秒。

function convertTime(sec) {
    var hours = Math.floor(sec/3600);
    (hours >= 1) ? sec = sec - (hours*3600) : hours = '00';
    var min = Math.floor(sec/60);
    (min >= 1) ? sec = sec - (min*60) : min = '00';
    (sec < 1) ? sec='00' : void 0;

    (min.toString().length == 1) ? min = '0'+min : void 0;    
    (sec.toString().length == 1) ? sec = '0'+sec : void 0;    
    
    return hours+':'+min+':'+sec;
}

一句话(不适合几个小时):

 function sectostr(time) {
    return ~~(time / 60) + ":" + (time % 60 < 10 ? "0" : "") + time % 60;
 }

您已经编写了足够多的代码来跟踪时间的分钟和秒部分。

你可以把时间因素加进去:

var hrd = time % (60 * 60 * 60);
var hours = Math.floor(hrd / 60);

var mind = hrd % 60;
var minutes = Math.floor(mind / 60);

var secd = mind % 60;
var seconds = Math.ceil(secd);

var moreminutes = minutes + hours * 60
function secondsToMinutes(time){
    return Math.floor(time / 60)+':'+Math.floor(time % 60);
}

我更喜欢将Millisecond视为自己的单元,而不是其他东西的子单元。从这个意义上说,它的值是0-999,所以你会想要填充3而不是2,就像我在其他答案中看到的那样。下面是一个实现:

函数格式(n) { 让mil_s =字符串(n % 1000)。padStart (3 ' 0 '); n =数学。Trunc (n / 1000); let sec_s =字符串(n % 60)。padStart (2, ' 0 '); n =数学。Trunc (n / 60); 返回String(n) + ' m ' + sec_s + ' s' + mil_s + ' ms'; } console.log(格式(241));

https://developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/String/padStart