前端时间倒计时

本文介绍了如何使用Vue.js和JavaScript实现一个倒计时功能,通过定时器和递归,实时显示距离指定未来时间的剩余天数、小时、分钟和秒。关键步骤包括获取当前时间、计算时间差,并利用formatTime和formatTimes过滤器格式化显示结果。
摘要由CSDN通过智能技术生成

距离未来的某一时间和当前时间的倒计时的,我们需要用到定时器和递归的方法。

<template>
   <div> 
     <span class="countdownText" v-if="dd != 0">{{dd}}天</span>
     <span  class="countdownTime">{{hh|formatTime}}</span>
     <span class="countdownTime" >{{hh|formatTimes}}</span>:
     <span class="countdownTime"> {{mm|formatTime}}</span>
     <span class="countdownTime" >{{mm|formatTimes}}</span>:
     <span class="countdownTime">{{ss|formatTime}}</span>
    <span class="countdownTime"> {{ss|formatTimes}}</span> 
   </div>
</template>

用到了过滤器
 filters:{
   formatTime: function (dataStr) {
      return  (dataStr).toString().substr(0,1);
     
   },
  formatTimes: function (dataStr) {
      return (dataStr).toString().substr(1,2);
   },
  },

时间属于这样的样式。所以采用过滤器将时间分割出来。

 //倒计时
    countTime:function(){
        var that=this;
        let nowTime = new Date().getTime();//当前时间
        let leftTime = this.lastdate - nowTime;
      //this.lastdata接口传递过来的倒计时结束时间,时间戳,需要用时间戳比较,获取时间差
      //this.endDates属于倒计时关闭的状态 
     //递归每秒调用countTime方法,显示动态时间效果
      if(nowTime>this.endDates && nowTime<this.lastdate){
           //this.kaijing="活动开奖中";
           this.clearfunction=setTimeout(function(){
            that.countTime();
          },1000);
        }else if(nowTime < this.endDates){
          this.dd= Math.floor(leftTime/1000/60/60/24);  
          this.hh = this.checkTime(Math.floor(leftTime/1000/60/60%24));
          this.mm = this.checkTime(Math.floor(leftTime/1000/60%60));
          this.ss = this.checkTime(Math.floor(leftTime/1000%60));
          this.clearfunction=setTimeout(function(){
            that.countTime();
          },1000);
        }else if(nowTime>this.endDates){
         //当前时间大于结束时间,不显示倒计时的操作
       }
    },
    checkTime(index){
      if(index < 10){
        index = "0" + index,
       //时间补零的操作
      }
      return index;
    },

 根据项目的时间,开始执行倒计时的count方法,离开页面的时间一定记得把倒计时暂停,防止一直在执行倒计时,本方法是按照秒倒计时,分秒时,可自行修改setTimeout的时间间隔。

可以将clearfunction作为一个对象放在data中,结束的时候直接调用

clearTimeout(this.clearfunction);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值