这是一个常见的问题,但我不知道如何解决它。下面的代码可以正常工作。
var mind = time % (60 * 60);
var minutes = Math.floor(mind / 60);
var secd = mind % 60;
var seconds = Math.ceil(secd);
然而,当我到达1小时或3600秒时,它返回0分和0秒。我如何避免这种情况,让它返回所有的分钟?
这是一个常见的问题,但我不知道如何解决它。下面的代码可以正常工作。
var mind = time % (60 * 60);
var minutes = Math.floor(mind / 60);
var secd = mind % 60;
var seconds = Math.ceil(secd);
然而,当我到达1小时或3600秒时,它返回0分和0秒。我如何避免这种情况,让它返回所有的分钟?
当前回答
说说我的意见:
function convertSecondsToMinutesAndSeconds(seconds){
var minutes;
var seconds;
minutes = Math.floor(seconds/60);
seconds = seconds%60;
return [minutes, seconds];
}
所以这个:
var minutesAndSeconds = convertSecondsToMinutesAndSeconds(101);
将有以下输出:
[1,41];
然后你可以像这样打印它:
console.log('TIME : ' + minutesSeconds[0] + ' minutes, ' + minutesSeconds[1] + ' seconds');
//TIME : 1 minutes, 41 seconds
其他回答
Day.js
如果你使用day.js,试试这个。
const dayjs = require('dayjs')
const duration = require('dayjs/plugin/duration')
dayjs.extend(duration)
const time = dayjs.duration(100, 'seconds')
time.seconds() // 40
time.minutes() // 1
time.format('mm:ss') // 01:40
我在想一个更快的方法来完成这件事,这就是我想到的
var sec = parseInt(time);
var min=0;
while(sec>59){ sec-=60; min++;}
如果我们想要将“时间”转换为分钟和秒,例如:
// time = 75,3 sec
var sec = parseInt(time); //sec = 75
var min=0;
while(sec>59){ sec-=60; min++;} //sec = 15; min = 1
要得到完整的分钟数,将总秒数除以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);
一句话(不适合几个小时):
function sectostr(time) {
return ~~(time / 60) + ":" + (time % 60 < 10 ? "0" : "") + time % 60;
}
1 -得到剩余的除法使用%。现在你有了一分钟还不够完整的几秒钟 2 -从总数中减去步骤1中获得的秒数。现在你有会议记录
例如,让我们假设你有700秒:
seconds = 700%60); //40 seconds
minutes = (700 - (700%60))/60; //11
//11:40