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

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

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


当前回答

秒到h:mm:ss

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

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

var seconds = parseInt(time % 60, 10);

console.log(hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds));

其他回答

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

/**
 * 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;
};

要得到完整的分钟数,将总秒数除以60(60秒/分钟):

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

为了得到剩余的秒数,将整个分钟数乘以60,然后减去总秒数:

const seconds = time - minutes * 60;

现在,如果你也想得到完整的小时数,首先用总秒数除以3600(60分钟/小时·60秒/分钟),然后计算剩余的秒数:

const 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);
}

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

使用ES6清洁一个衬垫


const secondsToMinutes = seconds => Math.floor(seconds / 60) + ':' + ('0' + Math.floor(seconds % 60)).slice(-2);

对于加0,我真的不认为需要有一个完整的其他函数,你可以简单地使用例如

var mins=Math.floor(StrTime/60);
var secs=StrTime-mins * 60;
var hrs=Math.floor(StrTime / 3600);
RoundTime.innerHTML=(hrs>9?hrs:"0"+hrs) + ":" + (mins>9?mins:"0"+mins) + ":" + (secs>9?secs:"0"+secs);

这就是为什么我们有条件语句的原因。

(条件?如果instance seconds大于9,则只显示seconds否则在它前面添加字符串0。

1 -得到剩余的除法使用%。现在你有了一分钟还不够完整的几秒钟 2 -从总数中减去步骤1中获得的秒数。现在你有会议记录

例如,让我们假设你有700秒:

seconds = 700%60); //40 seconds
minutes = (700 - (700%60))/60; //11
//11:40