问题:
今天做一个简单的业务逻辑,就是拿到两个类似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的差别。
(手打原创,多多支持,谢谢!)