1、数据格式之坑
最开始的时间格式是一个类似于这样的2020-09-07 24:00:00,然后使用new Date(),如下
let deadTime = new Date('2020-09-07 00:00:00'); //IOS得到的值是NaN,安卓正常
发布到移动端后,iPhone上测试了deadTime是NaN,安卓上正常获取时间,网上查了查,说iOS不识别2020-09-07包含的【-】,所以就又转换为2020/09/07 00:00:00
的格式;
let deadTime = new Date('2020-09-07 00:00:00'.replace(/-/g, '/')); //转换后变成2020/09/07 00:00:00安卓和IOS都兼容
这里放上实际测试兼容的一些格式对比图:
2、临界值之坑
但是问题又来了,如果这里是我们想取9月7日的最后一刻即 2020/09/07 24:00:00 IOS依然是NaN,安卓可以正常取到值。。
let deadTime = new Date('2020/09/07 24:00:00'); ////IOS得到的值是NaN,安卓正常
解决办法:
// 比较粗糙的解决方式
let deadTime = new Date('2020/09/07 23:59:59'); //少一秒IOS才可以取值,否则为NaN
// 比较精确的解决方式
let deadTime = new Date('2020/09/08 00:00:00') // 直接在日期+1天
let deadTime = new Date('2020/09/07 00:00:00').getTime() + 24 * 3600 * 1000; //获取9月7日初始时间再+1天的时间戳,精确到毫秒