微信小程序 倒计时

倒计时的算法:

倒计时的算法是:某个时间 - 现在时间 = 剩余时间,也就是倒计时。这里使用时间戳,时间戳简单来说是现在(某个时间)距离1970/1/1d=的总毫秒。所以某个时间总毫秒数 - 现在时间的总毫秒数 = 剩余毫秒数,再转换成天、时、分、秒。

转换的公式为:

d = parseInt(总秒数/60/60/24); //天数
h = parseInt(总秒数/60/60%24); //小时
m = parseInt(总秒数/60%60);    //分数
s = parseInt(总秒数%60);       //秒数


案例:

wxml

<view>
  <button type='primary' style='margin-bottom:40px; width: 500rpx;' bindtap='startSetInter'>开始</button>
  <button type='primary' style='margin-bottom:40px; width: 500rpx;' bindtap=''>剩余 {{h}}:{{m}}:{{s}}</button>
  <button type='primary' style=" width: 500rpx;" bindtap='endSetInter'>结束</button>
</view>


js

Page({
  data: {
    //存储计时器
    setInter: '',
    inputTime: 0,
    h: 0,
    m: 0,
    s: 0,
    expiration_time: '2022-12-3 12:00:00',  //输入到期的时间
  },
  onLoad: function () {
    var that = this;
    var inputTime = +new Date(that.data.expiration_time);
    that.setData({
      inputTime: inputTime
    })
  },
  startSetInter: function () {
    var that = this;
    //将计时器赋值给setInter
    that.data.setInter = setInterval(
      function () {
        var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
        var times = (that.data.inputTime - nowTime) / 1000 ; // times是剩余时间总的秒数  
        var h = parseInt(times / 60 / 60 % 24); //时
        h = h < 10 ? '0' + h : h;
        that.setData({
          h: h
        })
        var m = parseInt(times / 60 % 60); // 分
        m = m < 10 ? '0' + m : m;
        that.setData({
          m: m
        })
        var s = parseInt(times % 60); // 当前的秒
        s = s < 10 ? '0' + s : s;
        that.setData({
          s: s
        })
        if (h <= 0 && m <= 0 && s <= 0) {
                    that.endSetInter() //时间到后停止
        } else {
        }
      }, 1000);
  },
  time() {},
  endSetInter: function () {
    var that = this;
    //清除计时器  即清除setInter
    clearInterval(that.data.setInter)
  },
  onHide: function () {

  },
  onUnload: function () {
    var that = this;
    //清除计时器  即清除setInter
    clearInterval(that.data.setInter)
  },
})

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值