6 回答
TA贡献1877条经验 获得超6个赞
举个栗子:当前时间09:01:01, 目标时间10:59:59
按照你的计算方法,剩余秒数和分钟数是会超过60的。但是超过60,在数学上应该进位的,你少了进位操作。
再举个栗子,十进制里面,计算减法计算,是 个、十、百分开计算的么?
附上自己的代码:
const hours = parseInt(remainTime / 3600 / 1000); // 剩余小时
const min = parseInt((remainTime - (hours*3600*1000)) / 60 / 1000); // 剩余分钟
const second = parseInt((remainTime - (hours*3600*1000) - (min*60*1000)) / 1000); // 剩余秒
TA贡献1856条经验 获得超17个赞
function formatTime(t){
t=t.toString();
return t[1] ? t : '0'+t
}
function countDown(t){
var maxTime=(new Date(t).getTime())-Date.now();
if(maxTime>0){
var h=parseInt(maxTime/(60*60*1000));
var m=parseInt(maxTime/(60*1000)%60);
var s=parseInt(maxTime/(1000)%60);
var time=[h,m,s].map((el)=>formatTime(el)).join(':');
console.log(time)
setTimeout(countDown,1000,t);
}else{
console.log('timeout')
}
}
countDown('2018-04-17 18:00:00');
添加回答
举报
