js的new Date兼容iOS和Android

1,294 阅读1分钟

记录一个兼容性bug

后端接口返回日期格式:YYYY-MM-DD HH:mm:ss

前端直接拿过来

const date = new Date('2020-11-13 11:28:30') 
const year = date.getFullYear(); // => NaN

发现报错了 获取到的值是 NaN


Android端是兼容以下两种日期格式的(YYYY-MM-dd HH:mm:ssYYYY/MM/dd HH:mm:ss), 所以在Android上允许以上代码是没有问题的。

但是在iOS上只兼容(yyyy/MM/dd HH:mm:ss)格式 故需要把YYYY-MM-dd HH:mm:ss转换为YYYY/MM/dd HH:mm:ss

const inputValue = '2020-11-13 11:28:30';
const str = inputValue.replace(/-/g, '/'); // 2020/11/13 11:28:30
const date = new Date(str) 
// code ...

以上就可以解决了