最近做了一个倒计时功能。经过测试后,在PC端,以及安卓以及部分是正常的,没有任何问题。但是产品测试的同事说在IOS低版本里,出现BUG,倒计时的时间现成NaN的情况。
查找问题
这里分享下测试人员的截图:
我咨询了下测试同事,他们用的IOS版本是15.6.1和14.7.1,我用苹果13的IOS16测试是没问题的。所以就奇怪了,于是在网上搜集了下资料发现问题所在,接下来分享下。
解决问题
在IOS里,对于时间格式有一定的要求的。比如不支持"-"模式的,我们需要处理掉它。小编列举下常用的问题以及解决方案。
问题1
时间格式为2022-10-18,这种用new Date没有办法转换,可以调整为2022/10/18。用代码转换可以用以下代码:
new Date('2022-10-18'.replace(/-/g, "/"))
问题2
关于时间临界值:对于00:00:00和24:00:00这两个时间临界值,IOS里会转成NAN。解决方案:
let count_date = '';
let start_date = this.getToday() + ' ' + '02:00:00';
let end_date = this.getToday() + ' ' + '23:59:59';//之前写的是24:00:00,打印出来为NAN
let time_list = [];
let parm = {};
start_date = (new Date(start_date)).getTime();
end_date = (new Date(end_date)).getTime();
do{
count_date = this.formatDate(start_date);
parm = {
time': count_date,
'complete_time': this.getToday() + ' ' + count_date + ':00'
}
time_list.push(parm);
start_date = start_date + 1000*60*120
} while (start_date <= (end_date+1000))//调整之后在判断里面加了毫秒,不同场景可以有不同处理
问题3
时间格式为2022/09(年月),这种在iOS 用new Date转化之后也会变成NAN,这种情况可以补全日期。
new Date('2022/11/11 11:11:11')
总结
上面列举三个在IOS里常用的问题,估计大家经常会遇到,希望能够帮助到您。如果您有更好的方法可以跟我们一起分享哟。