前言:笔者近期使用new Date()
将日期格式转换时间对象在safari下报错Invalid Date引发的思考
项目中涉及将2022-08-01 00:00:00
日期格式转换为CST时间(本文中CST实现显示为英文是因为笔者系统语言为英文)
在chrome下可正常转换,使用语句:
new Date('2022-08-01 00:00:00')
可正常得到结果:
Mon Aug 01 2022 00:00:00 GMT+0800 (China Standard Time)
在safari下转换异常:
new Date('2022-08-01 00:00:00')
得到错误结果:
Invalid Date
其中具体原因大致猜测可能因为chrome兼容性比较优先适配更多方式吧(废话)
解决思路及办法:
将2022-08-01 00:00:00
拆分打散再传入Date对象,利用逐个穿参转换来获得正确结果。其中如何拆分不做演示,笔者使用split函数打散拆分的。
再次在chrome及safari运行
new Date('2022', Number('08')-1, '01', '00', '00', '00')
注意其中月份必须以(实际月份-1),因为月份在js中是以数组形式存储,实际该位置存储的是下标0-11代表1-12月
可正常得到结果:
Mon Aug 01 2022 00:00:00 GMT+0800 (China Standard Time)