iOS设备显示时间为NaN的原因及处理方法
程沛权2019/9/15 02:04:00
本文最后更新于 5 年 2 个月前,部分内容可能不适合当前所有情况,仅供参考。
其实是个存在很久的问题啦,之前在 IE 的年代应该也是有遇到过的,只不过后来日常涉及到时间的需求都是用时间戳比较多,加上现在各种屏蔽 IE 访问(我们公司的项目都是引导使用 chrome/firefox),所以给忘记了!
需求的背景:
这次是在做中秋节需求的时候,有个需求是在接口返回的一大堆动态的列表里,提取某个作者在某个指定时间范围内的动态出来,所以涉及到一个时间范围的控制。
踩坑的地方:
需求真的特别简单,但是就没想到还是栽了个小 bug。
在指定时间范围这里,一开始我也是用的时间戳,但是为了避免 QA 测试的时候改时间老是要去转时间戳,所以 config 里面的时间范围配置,我改成了年-月-日 时:分:秒
,再通过new Date('timeString').getTime()
的方式去转为时间戳,方便随时修改测试时间。
一开始只在 chrome 模拟器和安卓模拟器查看效果,没什么问题,结果拿到 iOS 设备上一看,emmm,返回的时间报错了,出现了 NaN。
解决的办法:
其实这个说是 bug 也是 bug,说不是 bug 也不是 bug,因为系统的时间格式本身是年/月/日
,而不是年-月-日
,在 chrome 之所以支持,是因为人家用户体验比较好,不支持的浏览器,也不能说是人家的错!
所以解决方式也就出来了:
1、要么在 config 的时候,要求必须使用年/月/日 时:分:秒
来配置;
2、要么就是在new Date('timeString').getTime()
之前,先对timeString
做一次replace(/-/g, '/');
以上。