首页 > 解决方案 > dayjs() 告诉我这个日期字符串的日期无效

问题描述

DayJs

如果重要的话,在浏览器上使用它(firefox + Vue + typescript)。

这是我的日期字符串

2021-02-05 12:00 AM

它对我的代码中的 AM/PM 大惊小怪:

const dateObj: any = dayjs('2021-02-05 12:00 AM').format('YYYY-MM-DD hh:mm A');

的输出dateObj始终是“无效日期”。如果我从字符串中删除“AM”,它会正确解析。如果我为相同的代码尝试这个在线测试器,输出是

NaN-NaN-NaN NaN:NaN PM

就像我的开发环境一样,如果我删除 AM,那就没问题了。

有任何想法吗?

编辑:在 Chrome 而不是 Firefox 上工作......

标签: javascripttypescriptvue.jsdatedayjs

解决方案


火狐上的问题

如果您深入研究实现,您会看到上面的日期字符串通过Day构造函数:new Day('2021-02-05 12:00 AM')。不幸的是,FF 不支持这种支持这一天的字符串格式,但 Chrome 支持。

最佳方法

dayjs文档提到:

对于解析除 ISO 8601 字符串以外的任何内容的一致结果,您应该使用 String + Format。

如果您仍然热衷于使用上述格式,则必须使用此处提到的插件

基本上,您必须进行如下更改才能在所有浏览器中工作:

import customParseFormat from 'dayjs/plugin/customParseFormat'
import dayjs from "dayjs"

dayjs.extend(customParseFormat)

const yourDate = dayjs('2021-02-05 12:00 AM', 'YYYY-MM-DD HH:mm A')

推荐阅读