dayJS传入1990-12-29Z格式日期报Invalid Date错误如何解决
Day.js 解析
YYYY-MM-DDZ格式日期报错解决方法 问题原因
- 仅引入了Day.js核心库,代码中调用的utc、timezone等扩展插件未正确引入,扩展逻辑没有生效,无法识别带Z后缀的UTC日期格式
- Day.js默认对仅包含日期、不带时分秒的UTC后缀格式(如
2019-01-25Z)解析存在歧义,需要主动指定UTC解析规则
解决步骤
- 先确认所有用到的扩展插件都已正确引入,插件版本必须和Day.js核心库版本完全一致,未引入的插件执行extend操作不会生效。
- 解析带Z后缀的UTC日期时,主动调用utc方法明确解析逻辑,不要直接使用默认的dayjs构造方法,修改后的业务代码如下:
dayjs.extend(utc) dayjs.extend(timezone) dayjs.extend(advancedFormat) dayjs.extend(localizedFormat) // 主动调用utc方法解析带Z标识的UTC日期 const validDate = dayjs.utc('2019-01-25Z').format('YYYY-MM-DD Z') // 输出结果:2019-01-25 +00:00
- 如果仍存在解析异常,可以搭配
customParseFormat插件开启严格格式匹配:
// 引入customParseFormat插件 dayjs.extend(customParseFormat) // 第二个参数指定传入的日期格式,第三个参数开启严格匹配模式 const validDate = dayjs('2019-01-25Z', 'YYYY-MM-DDZ', true).utc().format('YYYY-MM-DD Z')
内容的提问来源于stack exchange,提问作者Thomas Harrison
相关产品推荐
相关产品推荐

