Next.js React项目中Moment-timezone/Moment解析日期返回Invalid Date求助
问题根因
从你输出的Moment实例属性可以看到_locale字段里的_dayOfMonthOrdinalParse正则匹配的是带「日」的格式,说明当前项目里引入的Moment默认加载了中文 locale。你传入的日期字符串里使用的是英文月份全称December,但格式符MMMM在中文 locale 下仅能匹配中文月份名称(如「十二月」),因此解析失败返回无效日期。
你动态引入的CDN版本Moment默认使用英文 locale,因此相同逻辑可以正常解析。
解决方案
你可以选择以下任意一种方式解决:
- 解析时单独指定英文 locale,仅影响当前解析逻辑,不会造成全局污染:
const test = moment.utc('December 01, 2021 01:00pm', 'MMMM DD, YYYY hh:mma', 'en')
- 全局修改Moment默认locale为英文,适合项目不需要中文日期解析的场景:
在项目入口文件或者当前组件的顶部添加:
import moment from 'moment' import 'moment/locale/en' moment.locale('en')
- 排查项目依赖配置/Next.js 构建配置,移除自动注入的Moment中文locale逻辑,恢复默认英文配置。
内容的提问来源于stack exchange,提问作者Joren
相关产品推荐
相关产品推荐

