微信小程序--倒计时封装

402 阅读1分钟

在程序开发过程中,有时会用到倒计时,根据所给结束时间(例如:2018-10-01 00:00:00)算出剩余天数、时分秒,先总结的微信小程序的倒计时分享给大家!!

在后台异步返回结束时间时调用this.countDown(endTime)即可;

    data:{
        lastTime: '', //剩余时间
        endTimeText:'已结束',//结束文字
    }
    
    //参数endTime格式2018-10-01 00:00:00
   countDown(endTime) {
    let endTimeStr = endTime.toString();
    let endTimeNum = new Date(Date.parse(endTimeStr.replace(/-/g, "/"))).getTime();
    let self = this;
    let timer = setInterval(function() {
      let nowTime = new Date();
      let t = endTimeNum - nowTime.getTime();
      if (t > 0) {
        let day = Math.floor(t / 86400000);
        let hour = Math.floor((t / 3600000) % 24);
        let min = Math.floor((t / 60000) % 60);
        let sec = Math.floor((t / 1000) % 60);
        hour = hour < 10 ? `0${hour}` : hour;
        min = min < 10 ? `0${min}` : min;
        sec = sec < 10 ? `0${sec}` : sec;
        let format = '';
        if (day > 0) {
          format = `${day}${hour}${min}${sec}秒`;
        }
        if (day <= 0 && hour > 0) {
          format = `${hour}${min}${sec}秒`;
        }
        if (day <= 0 && hour <= 0) {
          format = `${min}${sec}秒`;
        }
        self.setData({
          lastTime: format
        });
      } else {
        clearInterval(timer);
        self.setData({
          lastTime: self.data.endTimeText,
        });
      }
    }, 1000);
  }