[JS]new Date兼容问题

描述

今天在开发小程序的时候,发现了一个问题。在测试的时候,就发现日历组件不展示日期了,然后我用开发者工具和手机打开后,是正常的,只有苹果手机才不显示,最后看源码,最后在大神的指导下,才改回来的。

就是给new Date()传递构造参数,让它去解析的时候,如果年月日之间的分隔符,使用的是 -,那么在苹果手机返回的就会有问题,它就返回一个NaN。


代码复现

new Date('2022-9-20 23:41').getDate();

这一串代码,在苹果手机中,返回的是一个NaN,而在安卓端,则返回正常的内容。


解决办法:

直接使用String.replace(正则匹配, 替换内容)函数,通过正则表达式,将 - 全部替换成 /,如果存在T,则也需要将T替换成空格即可。

这种方式,对苹果和安卓都是兼容的。

//全局搜索-,将它替换成/,然后拿着被替换完的字符串,链式再调用,去匹配T,替换成空格。
new Date(testDateTime.replace(/-/g,'/').replace(/T/g,' '));
发表评论 / Comment

用心评论~