关于new Date()在ios端的坑

问题:

今天做一个简单的业务逻辑,就是拿到两个类似xxxx-xx-xx xx:xx的日期进行比较大小。
第一念头就是把这日期字符串放到new Date("xxxx-xx-xx xx:xx")然后getTime()一下拿到两个时间戳进行比较就完事了。
然而,然而,然而......

(new Date("xxxx-xx-xx xx:xx")).getTime()这样在安卓和PC浏览器都能正确获取,唯独在ios端没能正确获取。

然后在ios端真机上断点打印一下(new Date("xxxx-xx-xx xx:xx")).getTime(),返回了NaN!!WTF??????👿💢💢💢

再打印了一下new Date("xxxx-xx-xx xx:xx"),返回valid Date空对象,WTF???这又是什么鬼?👿💢💢💢

纠结了许久,到底什么问题,赶紧度娘走一波😂发现ios端的new Date()是有格式要求的,目前年月日只支持xxxx/xx/xx,是固定有“ / ”分割的, 真的是哔了🐕了。

解决:

既然规定是“ / ”分割,那就替换一下“ - ”呗
let str="xxxx-xx-xx xx:xx";str=str.replace(/-/g, "/");搞定👌

完整:let t=(new Date("xxxx-xx-xx xx:xx".replace(/-/g, "/"))).getTime();

多哔哔两句:

Safari和IE没有测试过,不知道会不会有这样的问题(什么?兼容IE?再见!);
安卓和ios上的微信中的浏览器内核是不一样的,这也会导致上面的安卓和ios中new Date的差别。

(手打原创,多多支持,谢谢!)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容