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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:25:28