小程序倒计时功能实现

想要实现以下效果

image.png

注意:这里只是秒级倒计时

wxml:

        <view class="end-time">
            <text class="t0">剩余:</text>
            <text class="t1">{{count_down[0]+count_down[1] || 0}}</text>    
            <text class="t0">{{count_down[2]||'天'}}</text>
            <text class="t1">{{count_down[3]+count_down[4] || 0}}</text>
            <text class="t0">:</text>
            <text class="t1">{{count_down[6]+count_down[7] || 0}}</text>
            <text class="t0">:</text>
            <text class="t1">{{count_down[9]+count_down[10]|| 0}}</text>
        </view>

JS:

let timer = null; //这里是生命在page外面
Page({
  data:{
    count_down:"",
  },
 onLoad:function(){
    timer = setInterval(()=>{
        this.date_format( 这里写到期的日期 )
    } , 1000)
  },
onHide:function(){
    timer && clearInterval(timer)//清楚定时器 防止内存泄漏
},
   // 设置时间
  date_format: function(endTime) {
      var nowTime = new Date().getTime();//现在时间(时间戳)
      var endTime = new Date(endTime).getTime();//结束时间(时间戳)
      var time = (endTime-nowTime)/1000;//距离结束的毫秒数
      // 获取天、时、分、秒
      let day = this.fill_zero_prefix(parseInt(time / (60 * 60 * 24)));
      let hr = this.fill_zero_prefix(parseInt(time % (60 * 60 * 24) / 3600));
      let min = this.fill_zero_prefix(parseInt(time % (60 * 60 * 24) % 3600 / 60));
      let sec = this.fill_zero_prefix(parseInt(time % (60 * 60 * 24) % 3600 % 60));
  
      this.setData({
        count_down:day + '天' + hr + ":" + min + ":" + sec
      })  
  },

  // 位数不足补零
  fill_zero_prefix: function (num) {
    num =  num < 0 ? 0: num;//防止出现负数
    return num < 10 ? "0" + num : num //补零操作
  },
})

主要思路:

结束时间戳 - 当前时间 = 可倒计时时间

var nowTime = new Date().getTime();//现在时间(时间戳)
var endTime = new Date(micro_second).getTime();//结束时间(时间戳)

计算出 天/小时/分/秒 的整数

let day = this.fill_zero_prefix(parseInt(time / (60 * 60 * 24))); //天
let hr = this.fill_zero_prefix(parseInt(time % (60 * 60 * 24) / 3600));//小时
let min = this.fill_zero_prefix(parseInt(time % (60 * 60 * 24) % 3600 / 60));//分钟
let sec = this.fill_zero_prefix(parseInt(time % (60 * 60 * 24) % 3600 % 60));//秒

parseInt 有向下取整的作用  12.34天 => 12天
fill_zero_prefix 只是补零操作
一天的秒数     =>   (60 * 60 * 24)
一个小时秒数   =>    3600

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容