用setInterval做了一个倒计时的功能
功能代码
methods:{
timeFormat(param) {
return param < 10 ? '0' + param : param;
},
countDown(endTime) {
clearInterval(interval);
var interval = setInterval(() => {
// 获取当前时间,同时得到活动结束时间数组
let newTime = new Date().getTime();
// 对结束时间进行处理渲染到页面
let obj = null;
// 如果活动未结束,对时间进行处理
if (endTime - newTime > 0) {
let time = (endTime - newTime) / 1000;
// 获取天、时、分、秒
let day = parseInt(time / (60 * 60 * 24));
let hou = parseInt(time % (60 * 60 * 24) / 3600);
let min = parseInt(time % (60 * 60 * 24) % 3600 / 60);
let sec = parseInt(time % (60 * 60 * 24) % 3600 % 60);
obj = {
day: this.timeFormat(day),
hou: this.timeFormat(hou),
min: this.timeFormat(min),
sec: this.timeFormat(sec)
};
} else { // 活动已结束,全部设置为'00'
obj = {
day: '00',
hou: '00',
min: '00',
sec: '00'
};
clearInterval(interval);
}
this.countDownList = obj.day + '天' + obj.hou + '时' + obj.min + '分' + obj.sec + '秒';
}, 1000);
}
}
但是发现IOS系统中setInterval计时器不能正常使用,在安卓系统均正常,在微信开发者工具以及真机调试时也是正常显示。
排查后发现是Date()的问题,IOS解析时间时无法识别‘-’。
解决方案:把 - 都替换成 /
const Time = '2020-04-14 23:59'
原代码
new Date(Time).getTime()
修改后
new Date(Time.replace(/-/g, "/")).getTime()