使用MomentJs计算日期差返回NaN问题求助
解决MomentJS计算日期差返回NaN的问题
问题根源是你未指定日期解析格式:API返回的16/12/2023属于DD/MM/YYYY格式,直接用moment(post.validTill)解析时,MomentJS无法正确识别该格式,生成了无效的moment实例,最终导致diff返回NaN。
修正后的代码如下:
const start = moment(); // 明确传入日期格式,告诉MomentJS如何解析字符串 const end = moment(post.validTill, "DD/MM/YYYY"); // 先校验解析结果是否有效,避免异常 if (end.isValid()) { const diff = end.diff(start, "days"); console.log(diff); // 正数为剩余天数,负数表示日期已过期 } else { console.error("日期格式解析失败"); }
核心注意点:
- 必须在
moment()的第二个参数中指定目标日期的格式字符串,确保解析逻辑匹配API返回的格式 - 用
isValid()校验解析后的moment实例,避免无效日期引发后续计算错误 - 若
diff返回负数,说明结束日期早于当前日期,可根据业务场景做过期提示等处理
内容的提问来源于stack exchange,提问作者sultan.h
相关产品推荐
相关产品推荐

