1. 实现效果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b01cc4171f4f100a91fcf7fd375c1a6b.png)
2. 实现原理
- 计算和显示的变量分离;h、m、s用于计算,均为0~59;h1、m1、s1用于显示;
- 设置定时器,让s每隔1秒减1
- 当s<0时,s=59,m=m-1
- 当m<0时,m=59,h=h-1
- 当h<0时,h=m=s=0,并清除定时器
- 当h、m、s小于10时,h1、m1、s1分别前面补0占位
3.代码
function getDHMS(str){
str = new Date('2020-10-30 8:00')
let sec = Math.round((new Date(str) - new Date())/1000);
let date,h,m,s,ys;
if(Math.floor(sec/(24*60*60))>=1){
date = Math.floor(sec/(24*60*60));
ys = sec%(24*60*60);
}else{
date = 0;
ys = sec;
}
if( Math.floor(ys/(60*60)>=1)){
h = Math.floor(ys/(60*60));
ys = ys%(60*60);
}else{
h = 0;
ys = ys;
}
if( Math.floor(ys/60)>=1){
m = Math.floor(ys/60);
ys = ys%60;
}else{
m = 0;
ys = ys;
}
if(ys>0){
s = ys;
}else{
s = 0
}
return {
date,h,m,s
}
}
function timechange(obj,ele,str){
let {h,m,s} = obj;
let time,s1,m1,h1;
let timer = setInterval(function(){
s--;
if(s<0){
s = 59;
m--;
}
if(m<0){
m = 59;
h--;
}
if(h<0){
h = m = s = 0;
clearInterval(timer);
}
s1 = s<10?'0'+s:s;
m1 = m<10?'0'+m:m;
h1 = h<10?'0'+h:h;
time = h1 + ' : ' + m1 + ' : ' + s1;
ele.innerHTML = str+time;
},1000)
}