在制作一个商城项目时,发现有些时间在苹果 IOS 系统上显示 NaN-NaN-NaN 的问题,而安卓设备都是正常的。经过排查发现出现问题的字段后端返回的格式是 2017-08-12 23:00:00
这种,而 以 -
分割的时间在苹果手机和低版本IE浏览器中上使用new Date()
进行转换时就会出现错误。
以下代码在 ios 执行会出现 NaN 转换错误:
const Time = new Date('2017-08-12 23:00:00')
以下代码在 ios 和安卓都可以正常解析:
const Time = new Date('2017/08/12 23:00:00')
知道了问题的原因,我们在使用前就可以通过正则对内容进行处理,或者和后端约定返回符合要求的格式,如果是我们自己进行转换可以使用这个 js 代码。
// 通过replace方法把 - 替换为 /
const Time = new Date('2017-08-12 23:00:00'.replace(/-/g, '/'))
转换后就可以正常调用 getFullYear() ,getMonth(),getDate() 这些方法进行使用了。