小程序订单倒计时

小程序订单倒计时有订单详情的到计时和订单列表的倒计时

单个倒计时

采用了setInterval()定时器:主要思路就拿到一个订单支付时间,加上一个到计时的时间,然后减去本地获取到的时间(时间都采用时间戳算)

  computedLastPayTime() {
    let self = this;
  self.setData({
    interval:setInterval(function () {
      let ordTime = self.data.orderTime
      var format = ordTime.replace(/-/g, '/')//兼容苹果和安卓系统时间
      let createTime = Date.parse(format) / 1000;
      let endTime = createTime + 1800;//此处1800为倒计时半小时,自由根据时间转换时间戳
      let clientTime = Date.parse(new Date()) / 1000;
      let lastTime = endTime - clientTime;
      let int_minute;
      if (lastTime > 0) {
        int_minute = Math.floor(lastTime / 60);//Math向下取整
        if (int_minute < 10) {
          int_minute = "0" + int_minute;//当分钟小于10时前面补0
        }
        lastTime -= int_minute * 60;
        if (lastTime < 10) {
          lastTime = "0" + lastTime;
        }
        self.setData({
          int_minute: int_minute,
          lastTime: lastTime
        })
      } else if (Math.floor(lastTime) ==0){
        
        self.cancelOrder()
        // self.getOrderlist();
      }else{
      }
      self.statusTextChange()
    }, 1000)
  });
  },

批量的倒计时 

采用了setTimeout()延时器:批量到计时和单个倒计时时间算法相同,主要循环出需要倒计时的时间列表

getpink: function () {
    let that = this;
    var pinkEntityList = that.data.result//拿一个总的数组数据
    var endtime = {}
    for (var i = 0; i < pinkEntityList.length; i++) { //循环出时间 
      var status = pinkEntityList[i].status//拿订单列表中订单状态/无状态要求后面均可去除相关
      const orderId = pinkEntityList[i].orderId//拿订单的ID做为创建新数组的唯一键值
      if (status == 4) {
        let ordTime2 = pinkEntityList[i].createTime
        var format = ordTime2.replace(/-/g, '/')
        let createTime = Date.parse(format) / 1000;
        var nowdate = (new Date()) / 1000;
        var second = Math.floor(createTime + 1800 - nowdate); //时间差
        if (second > 0) {
          let hou = parseInt(second % (60 * 60 * 24) / 3600);
          let min = parseInt(second % (60 * 60 * 24) % 3600 / 60);
          let sec2 = parseInt(second % (60 * 60 * 24) % 3600 % 60);
          // 天数位
          var day = Math.floor(second / 3600 / 24);
          var dayStr = day.toString();
          if (dayStr.length == 1) dayStr = '0' + dayStr;
          // 小时位
          var hr = Math.floor((second - day * 3600 * 24) / 3600);
          var hrStr = hr.toString();
          if (hrStr.length == 1) hrStr = '0' + hrStr;
          // 分钟位
          var min = Math.floor((second - day * 3600 * 24 - hr * 3600) / 60);
          var minStr = min.toString();
          if (minStr.length == 1) minStr = '0' + minStr;
          // 秒位
          var sec = Math.floor(second - day * 3600 * 24 - hr * 3600 - min * 60);
          var secStr = sec.toString();
          if (secStr.length == 1) secStr = '0' + secStr;
          endtime[orderId] = hrStr + ':' + minStr + ':' + secStr//以orderId为键创建新的数组
        } else if (second == 0) {
          const orderId = pinkEntityList[i].orderId
          order.cancelOrder(orderId).then(res => {
            that.getOrderlist();
          }).catch(() => { })
          that.getOrderlist()
        }
        else {
        }
      } else {

      }
    }
    var pinkEntityList2 = []
    that.setData({
      newPin: endtime
    })
    var mytime = setTimeout(this.getpink, 1000);//每秒执行一次
    // 保存定时器name
    that.setData({
      timer: mytime
    })
  },

.wxml 

<view>剩余可支付时间: {{newPin[item.orderId]}}</view>

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值