1.描述

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

文章目录

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

2.代码复现

// 后端返回的日期格式是一个字符串,由横线分隔的。
// 我需要先将它转换成 Date 对象, 才能走后边的代码, 所以在这里进行了转换。
new Date('2022-9-20 23:41').getDate();

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

3.解决办法:

直接使用 字符串属性.replace() 函数,通过正则表达式将 - 全部替换成 /,如果存在T,则也需要将T替换成空格即可,这种方式对苹果和安卓都是兼容的。

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