React中设置Moment葡语locale后调用toDate未返回葡语格式日期
问题根因说明
- 你遇到的输出不生效的核心原因,是混淆了moment本地化配置的作用范围:
toDate()方法返回的是原生JavaScript Date对象,这类对象的字符串输出完全由浏览器内核的内置实现决定,和moment设置的语言配置没有任何关联,不管你给moment设置多少语言,转成原生Date后打印永远是浏览器默认的英文格式。- 你期望的葡语格式日期(比如星期、月份的葡语缩写),属于moment基于locale配置生成的格式化字符串范畴,根本不会通过
toDate()的输出体现。
正确实现代码
// 注意导入顺序:必须先导入moment核心包,再导入对应语言包 import moment from 'moment'; import 'moment/locale/pt'; // 全局激活葡萄牙语配置 moment.locale('pt'); const targetDate = '26-02-2020'; // 不要使用toDate()做展示格式化,直接调用moment自带的format方法生成本地化文本 const ptFormattedDate = moment(targetDate, 'DD-MM-YYYY').format('ddd MMM YYYY HH:mm:ss [GMT]ZZ'); console.log(ptFormattedDate); // 实际输出:Qua Fev 2020 00:00:00 GMT+0000,和你预期的格式一致
额外注意事项
如果你需要把日期对象传给第三方组件(比如日历选择器、数据可视化图表),可以正常调用
toDate()把原生Date实例传过去,这类组件的本地语言显示需要在组件自身的配置里单独设置,不要尝试通过moment的locale配置修改原生Date的打印格式,这不属于moment的功能职责。
内容的提问来源于stack exchange,提问作者Guilherme Lima
相关产品推荐
相关产品推荐

