最近,项目中需实现下单后,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版权协议,转载请附上原文出处链接和本声明。