【发布时间】:2020-10-08 01:58:22
【问题描述】:
分钟和小时似乎不正确,我需要他的分钟不超过 60。非常感谢
counter = 0;
var timeleft = 36070;
function leftPad(number, targetLength) {
var output = number + '';
while (output.length < targetLength) {
output = '0' + output;
}
return output;
}
function covertSeconds(s){
var hrs = Math.floor(s/3600);
var min = Math.floor(s/60);
var sec = s% 60;
return leftPad(hrs,2) +":" + leftPad(min,2) + ":"+ leftPad(sec,2)
}
var timer = $("#timer").text(covertSeconds(timeleft - counter));
function timeIt(){
counter ++;
timer.text(covertSeconds(timeleft - counter));
};
setInterval(timeIt, 1000)
【问题讨论】:
-
仅供参考:setInterval 不准确
-
您已经在
sec = s % 60;做了正确的事,但对min和hrs没有做任何事情。 -
同意上面的,在你的定时器启动时设置一个带有时间戳的变量会更准确,然后使用日期对象在你的间隔中获取一个新的时间戳,并检查开始时间之间的差异和当前时间经过毫秒。然后对该产品进行数学计算以使其成型以进行展示。这样,即使 setInterval (或超时)漂移,您实际上并不依赖于每秒准确运行一次来获得准确的时间 - 它始终基于时间戳数学,因此当 setInterval 确实运行时,您可以获得准确的测量.
标签: javascript jquery