Moment.JS处理不同日期时无法正确获取月份且提示无效日期
Moment.js 无效日期报错修复方案
问题根因
- 首次解析原始日期数据时,你明确指定了输入格式为
DD/MM/YYYY,可以正常识别日期 - 后续调用
moment(l)解析已经格式化完成的DD/MM/YYYY格式字符串时,没有传入对应格式参数,Moment.js 默认会按照MM/DD/YYYY的规则解析:当日期的日字段数值大于12时,会被误判为非法月份,触发Invalid date错误。
修复方案
方案1(推荐):复用已解析的Moment对象
无需重复解析日期字符串,直接保存首次解析的对象使用即可:
// 先保存解析完成的Moment对象 const odMoment = moment(this.cellData[0]['"OD"'], "DD/MM/YYYY"); const l = odMoment.format("DD/MM/YYYY"); const p = moment().format("M"); // 直接复用已有对象,避免重复解析出错 console.log(' l ', odMoment, ' p ', p);
方案2:解析字符串时明确指定格式
如果确实需要单独解析格式化后的字符串,必须传入匹配的格式参数:
console.log(' l ', moment(l, "DD/MM/YYYY"), ' p ', p);
内容的提问来源于stack exchange,提问作者Emad Khan
相关产品推荐
相关产品推荐

