javascript - 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 上工作......
解决方案
火狐上的问题
如果您深入研究实现,您会看到上面的日期字符串通过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')
推荐阅读
- python - Discord Bot 在不应该的情况下随机发送多次命令
- regex - 返回破折号后跟单个字符
- components - 当`customElement:true`时如何使用`svelte-spa-router`?
- python - 使用 jupyter notebook 导入熊猫时出现 Python 错误 - UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfa in position 3152: invalid start byte
- angular - Angular RxJS 主题订阅和取消订阅
- reactjs - 将另一个组件的 function 和 useStates 作为 props 传递
- html - 被点击的按钮应在名为目标的 iframe 中打开网页
- ios - 堆叠轮播 SwiftUI
- excel - 水晶报表显示文字
- python - 在 postgresql 查询中使用多个 pandas 列表来过滤数据