You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React/ES6项目中修改moment.js的locale并解决日期解析报错?

问题原因

你的错误和locale设置本身无关,核心是Moment对非标准日期字符串的默认解析规则不匹配你的输入格式:
当你直接向moment()传入DD/MM/YYYY格式的字符串时,Moment会优先用ISO 8601标准尝试匹配,匹配失败后就会回退调用浏览器原生的Date构造函数解析,不同浏览器对非标准日期格式的解析逻辑不一致,所以才会返回Invalid Date。

你误以为设置en-gb locale会自动让Moment按DD/MM/YYYY解析输入,这是常见误区:Moment的locale配置默认仅影响输出格式(比如本地化的月份/星期名称、format('L')这类别名的输出规则),不会修改无格式指定时的输入解析逻辑。

修复方案

  • 最稳妥的解决方式是解析时明确指定输入格式,修改代码如下:
import moment from 'moment';
import 'moment/min/locales';

moment.locale('en-gb');
// 第二个参数传入输入的日期格式
moment('31/08/2021', 'DD/MM/YYYY').format('YYYY-MM-DD') 
  • 如果需要批量适配en-gb的输入解析规则,可以开启Moment的严格解析模式并绑定locale对应的格式规则,不过单场景下更推荐上面的显式指定格式方案,兼容性更高也没有隐式逻辑。

内容的提问来源于stack exchange,提问作者Aakash Verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:18:02