微信小程序 多个商品 30分钟倒计时

博客提及商品30分钟倒计时,结合标签推测可能是在微信小程序中运用JavaScript实现该功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 商品30分钟倒计时,

 

//30分钟倒计时

Page({
  /**
   * 页面的初始数据
   */
  data: {
    order: [
      {
        _id: 'wersdfsdfe89',
        status: 'unpay',//未支付状态
        publicTime: '2022-10-28 00:11:59',//订单发布时间
        countdown:'30:00'//倒计时
      },
      {
        _id: 'sdfsdfsd654',
        status: 'unpay',//未支付状态
        publicTime: '2022-10-28 00:10:59',
        countdown:'30:00'
      }
    ]
  },


  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    //进行倒计时判断
    const { order } = this.data
    order.forEach(item => {
      if (item.status === 'unpay') {
        this.countdown(item._id, item.publicTime)
      }
    })
  },
  // 倒计时
  countdown(_id, publicTime) {
    const that = this
    //倒计时结束时间,将发布时间转化为秒,然后加上30分钟,即30分钟倒计时
    const endTime = new Date(publicTime).getTime() / 1000 + 30 * 60
    //当前时间,转化为秒
    const nowTime = new Date().getTime() / 1000
    //时间差
    let timeDiff = Math.floor(endTime - nowTime)
    //判断倒计时是否超过30分钟,即时间差是否小于0
    if (timeDiff < 0) {
      //修改订单状态为 invalid已失效
      that.updateOrder(_id,'status')
    } else {
      let myTime = setInterval(() => {
        if (timeDiff < 0) {
            //修改订单状态为 invalid已失效
          that.updateOrder(_id,'status')
          clearInterval(myTime)
          return
        } else {
          //将时间转化为 分:秒
          const t = that.formatTime(timeDiff)
          //修改that.order中的countdown
          that.updateOrder(_id,t)
        }
        timeDiff--
      }, 1000);
    }
  },

    //倒计时时间格式化
    formatTime(totalSecond){
      //剩余天数
      //var day = Math.floor(totalSecond / 3600 / 24)
      //n天后剩余小时数
     // var hour = Math.floor(totalSecond /3600 % 24)
      //n天n小时后剩余分钟数
      var min = Math.floor(totalSecond / 60 % 60)
      min = min<10 ? '0'+min:min
      //n天n小时n分钟后剩余秒数
      var sec = Math.floor(totalSecond % 60)
      sec = sec<10 ? '0'+sec:sec
      //return day + "天" + hour + "小时" + min + "分" + sec + "秒"
      return min + ":" + sec
    },

  //修改订单,根据value值判断具体修改的属性
  updateOrder(_id,value) {  
    let { order } = this.data
    order.forEach(item => {
      if (item._id === _id) {
        if(value === 'status'){
          //修改订单状态为 已失效invalid
          item.status = 'invalid'
        }else{         
          //更新倒计时属性
          item.countdown = value
        }
      }
    })
    this.setData({
      order
    })
    //根据_id,修改数据库中对应数据的status
  },

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少杰()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值