根据开始时间和需要持续的时间来做一个倒计时的功能
比如我的开始时间为2019-3-12 17:30:00,需要它在30分钟之后过期
思路:开始时间+过期时间=最后的时间
最后的时间-动态的当前时间=倒计时
<body>
<span id="timer"></span>
<script>
countdown('2019-3-12 17:30:00',30) //第一个参数为开始时间,第二个参数为多少分钟后过期
function countdown(val1,val2) {
var now=new Date(val1); //处理开始时间
var minutes=Number(val2); //处理输入的过期时间
var end=now.setMinutes (now.getMinutes () + minutes); //计算最后时间
var time_now = new Date().getTime(); //当前时间
var msec =end - time_now; //最后时间-当前时间
if(msec>0){
let day = parseInt(msec / 1000 / 60 / 60 / 24)
let hr = parseInt(msec / 1000 / 60 / 60 % 24)
let min = parseInt(msec / 1000 / 60 % 60)
let sec = parseInt(msec / 1000 % 60)
day = day
hr = hr > 9 ? hr : '0' + hr
min = min > 9 ? min : '0' + min
sec = sec > 9 ? sec : '0' + sec,
document.getElementById('timer').innerHTML=`${day}天${hr}小时${min}分${sec}秒`
}else{
clearInterval(tim);
}
const that = this
var tim=setTimeout(function () {
that.countdown('2019-3-12 17:30:00',30)
}, 1000)
}
</script>
</body>
//获取服务器时间,用于防止本机时间错乱的情况下,可用返回数据时头部的时间作为倒计时的当前时间
<script>
var severtime;
var time_now;
function getServerDate(){
var request = new XMLHttpRequest();
request.open('GET', '/',false);
request.send();
severtime=new Date(request.getResponseHeader("Date"))
time_now = severtime.getTime(); //当前时间
console.log('time_now',time_now)
}
getServerDate()
</script>