微信小程序——解决IOS系统倒计时问题

最近,项目中需实现下单后,24小时内未付款,则取消订单,页面显示剩余支付时间

逻辑代码:

methods:{
    timeFormat(param) {
		return param < 10 ? '0' + param : param;
	},
	countDown(endTime) {
    let _that = this;
    clearInterval(interval);
    var interval = setInterval(() => {
      // 获取当前时间,同时得到活动结束时间数组
      let newTime = new Date().getTime();
      let endTime = new Date(endTime).getTime();
      // 对结束时间进行处理渲染到页面
      let obj = null;
      // 如果活动未结束,对时间进行处理
      if (endTime - newTime > 0) {
        let time = (endTime - newTime) / 1000;
        // 获取天、时、分、秒
        let h = parseInt(time / 60 / 60 % 24);
        let m = parseInt(time / 60 % 60);
        let s = parseInt(time % 60);
        o.hou = this.timeFormat(h);
        o.min = this.timeFormat(m);
        o.sec = this.timeFormat(s);
        return o.countDown = o.hou + ':' + o.min + ':' + o.sec
      } else { // 活动已结束,全部设置为'00'
        o.hou = "00";
        o.min = "00";
        o.sec = "00";
        _that.closeOrder(o.orderId, '支付时间已过期,自动关闭订单', '倒计时取消');
        clearInterval(interval);
      }

    }, 1000);
  }
}

但是小程序发布后发现IOS系统中setInterval计时器不能正常使用,在安卓系统均正常,在微信开发者工具以及真机调试时也是正常显示。

排查后发现是Date()的问题,IOS解析时间时无法识别‘-’。

解决方案:把 都替换成

原代码 

let endTime = new Date(endTime).getTime();

修改后

let endTime = new Date(endTime.replace(/-/g, "/")).getTime();

 


版权声明:本文为jolieLi2019888原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。