问题:
前端开发时,使用new Date()解析“YYYY-MM-DD”这种格式的时间,在chrome和Firefox中正常解析,但是在safar中解析为NaN-NaN-NaN,这是因为safari的new Date()方法要求格式为“YYYY/MM/DD”,所以出现了问题。
最简单的解决方案为将YYYY-MM-DD格式化为YYYY/MM/DD处理,但是这种做法显然增加了工作量,同时也降低了代码的可读性。
let datetime = '2021-01-01'
datetime = datetime .replace(/\-/g, "/");
console.log(new Date(datetime))
最终的解决方案解决方案:
使用前端方法库moment替换原生的new Date()方法,其对多端的时间处理做了统一的封装,可以在不变更时间格式的前提下进行时间转换,同时还提供了大量对于时间相关的处理函数。
let datetime1 = '2021-01-01';
let datetime2 = '2021/01/01';
console.log(moment(datetime1));
console.log(moment(datetime2));