head-img Force's Blog

Javascript new Date() safari Invalid Date 引发的思考

JavaScript

前言:笔者近期使用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)
点我评论
打赏本文
二维码


99

文章

24

标签

 推广