今天做倒计时的时候,突然发现倒计时出了问题,多算了8个小时。找了很久才发现问题所在。希望遇到和我一样问题的人能够看到这篇文章,解决掉自己的问题
先看图片的问题:根据今天的2020/9/2 22.26 到 2020/9/3这一天,倒计时应该显示 0天1时33分55秒,但是偏偏就多了8个小时
问题代码如下:
//倒计时
function countTime() {
//获取当前时间
var date = new Date();
var now = date.getTime();
//设置截止时间 str=2020-9-3
var str=document.getElementById("endtime").innerHTML;
// var str=new Data("2020-9-3 00:00:00");
// var str=endTime;
var endDate = new Date(str);
var end = endDate.getTime();
//时间差
var leftTime = end-now;
//定义变量 d,h,m,s保存倒计时的时间
var d,h,m,s;
if (leftTime>=0) {
d = Math.floor(leftTime/1000/60/60/24);
h = Math.floor(leftTime/1000/60/60%24);
m = Math.floor(leftTime/1000/60%60);
s = Math.floor(leftTime/1000%60);
//将倒计时赋值到div中
document.getElementById("_d").innerHTML = d+"天";
document.getElementById("_h").innerHTML = h+"时";
document.getElementById("_m").innerHTML = m+"分";
document.getElementById("_s").innerHTML = s+"秒";
}else if(!Number.isNaN(leftTime)){ //第一次调用该函数,leftTime的值是NAN
document.getElementById("overdue").innerHTML='<font color="red">已过期</font>';
return ;
}
//递归每秒调用countTime方法,显示动态时间效果
setTimeout(countTime,1000);
}
此时执行的是上面的代码,出现了该问题,其实问题出在了赋值上面,上面我给str赋值时,由于我对 endTime做了格式设置,所以 endTime 里面的值是 2020-9-3,但是当我把这个值修改为 2020-9-3 00:00:00 之后,就能够正常显示时间了。
如果这篇文章有帮到你的话,就请麻烦帮忙点个赞啦!!!