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

使用moment计算两日期月份差值不符合预期,如何实现仅月份相减?

问题原因

你原来用moment.diff计算的是两个日期之间相隔的总月份数,你给出的示例中两个日期相差5年零2个月,总月份就是5*12 +2 =62,和你的输出结果一致,不符合你只取月份数值相减的需求。

实现代码

你只需要分别提取两个日期的月份数值(注意moment的month()方法返回值为0基,即0对应1月、11对应12月,需要+1转为1-12的自然月份)再做差值即可:

// 获取当前月份(1-12)
const currentMonth = moment().month() + 1
// 获取历史日期的月份(1-12)
const historyMonth = moment($scope.creationTime).month() + 1
// 计算月份差值
const targetDiff = currentMonth - historyMonth

console.log(targetDiff) // 你的示例场景下输出2

补充说明

如果需要避免出现负数结果(比如当前为1月、历史日期为12月时,差值为1-12=-1),可以调整计算逻辑为取模运算:

const targetDiff = (currentMonth - historyMonth + 12) % 12

上述调整后1月减12月的结果为1,符合常规的同年度月份循环差值需求。

内容的提问来源于stack exchange,提问作者I Love Stackoverflow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:06:04