JS倒计时

148 阅读1分钟

前言

该文章记录一些工作中用到的一些JS方法,所有内容均从网上整理而来,加上自己得理解做一个整合,方便工作中使用。

1. 需求

一个倒计时,有开始时间和结束时间,现在时间如果在两者之间,就开始倒计时,否则提示未开始/已结束

2. JS部分

//利用倒计时,获取当前时间与结束时间对比,差值时间戳获取天数、小时数、分钟数、秒数
//注意取整、补零,然后返回一个对象,方便渲染

const startime=1674823321000
const endtime=1674400681000
const currentime = Date.now() //当前时间戳
let status=0 //状态:开始(1)/结束(2)/进行中(0)
let times={
    day:'00',
    hour:'00',
    minute:'00',
    seconds:'00'
}//渲染取值

//判断时间开始还是结束
function activeStatus(stime,etime,ctime){
  ctime<etime && ctime>stime?status=0 : ctime<stime?status=1:status=2
}
//取整
function ChangeNumFloor(num) {
  return Math.floor(num)
}
//补零
function CheckTime(i) {
  return i.toString().padStart(2, '0')
}
//取各个单位值
function dayHMS(time){
    times = {
        day:CheckTime(ChangeNumFloor(time / 1000 / 60 / 60 / 24)),
        hour:CheckTime(ChangeNumFloor((time / 1000 / 60 / 60) % 24)),
        minute:CheckTime(ChangeNumFloor((time / 1000 / 60) % 60)),
        seconds:CheckTime(ChangeNumFloor((time / 1000) % 60)),
      } 
}
//倒计时
let timer = setInterval(() => {
    //如果当前时间在开始时间和结束时间中间,就一直倒计时,否则就结束倒计时
  (Date.now()<endtime && Date.now()>startime)?dayHMS(end_time-Date.now()):clearInterval(timer)
}, 1000);

总结

这个方法很基础,简单易懂,重要得是记得清除定时器;如果有更好得方法,欢迎留言