这是一个常见的问题,但我不知道如何解决它。下面的代码可以正常工作。
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秒。我如何避免这种情况,让它返回所有的分钟?
当前回答
我发现的最简洁的方法只用一行就可以完成:
let timeString = `${timeInSeconds/60|0}:${timeInSeconds%60}`
解释
“${…}的模板文字。允许表达式从字符串本身转换为字符串。注:IE不兼容。
timeInSeconds/60|0将秒转换为分钟(/60)。这给出了一个有理数。从这里开始使用按位OR(|0)进行截断
timeInSeconds % 60余(模)。给出变量的余数除以60。
小时
这种方法可以扩展到包括这样的时间:
let timeString = `${timeInSeconds/60/60|0}:${timeInSeconds/60%60|0}:${timeInSeconds%60}`
重复这个过程,你甚至可以加上天。
其他回答
你也可以使用本机Date对象:
var date = new Date(null);
date.setSeconds(timeInSeconds);
// retrieve time ignoring the browser timezone - returns hh:mm:ss
var utc = date.toUTCString();
// negative start index in substr does not work in IE 8 and earlier
var time = utc.substr(utc.indexOf(':') - 2, 8)
// retrieve each value individually - returns h:m:s
var time = date.getUTCHours() + ':' + date.getUTCMinutes() + ':' + date.getUTCSeconds();
// does not work in IE8 and below - returns hh:mm:ss
var time = date.toISOString().substr(11, 8);
// not recommended - only if seconds number includes timezone difference
var time = date.toTimeString().substr(0, 8);
当然,这个解决方案只适用于小于24小时的timeInSeconds;)
这是一个ES6版本的秒到分钟和秒的转换,带有填充(00:00格式)。它只接受整数值的秒和~~(x)是速记地板操作。
const padTime = n => (" + n).padStart(2,0); const secondsToMinSec = time => “$ {padTime(~ ~(时间/ 60)}:$ {padTime(时间- ~ ~(时间/ 60)* 60)}” ; 对于(设I = 0;I < 10;我+ +){ const seconds = ~~(Math.random() * 300); console.log(秒,secondsToMinSec(秒)); }
您已经编写了足够多的代码来跟踪时间的分钟和秒部分。
你可以把时间因素加进去:
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
秒到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));
Moment.js
如果你使用的是Moment.js,那么你可以使用内置的Duration对象
const duration = moment.duration(4825, 'seconds');
const h = duration.hours(); // 1
const m = duration.minutes(); // 20
const s = duration.seconds(); // 25