使用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
相关产品推荐
相关产品推荐

