You need to enable JavaScript to run this app. 如何使用moment.js比较两个日期,仅匹配日相同即可无需限制年份一致
优惠活动
大模型
产品
解决方案
定价
更多

如何使用moment.js比较两个日期,仅匹配日相同即可无需限制年份一致

Moment.js 自定义日期匹配实现方案

你需要的对比逻辑可以通过以下两种方案实现,可根据实际需求选择:


方案1:仅对比「日期数字(几号)」,忽略年份、月份

如果只要两个日期的「几号」数值相同就返回true(比如4月17和5月17也会返回true),直接提取两个moment对象的date()属性对比即可:

// 比较方法
function isDateNumSame(date1, date2) {
  return date1.date() === date2.date();
}

// 调用示例
if (isDateNumSame(date1, date2)) {
  c.log('same')
} else {
  c.log('not same')
}

方案2:对比「月份+日期」,仅忽略年份

这是更符合你给出示例的需求:只要是每年同一个月的同一天就返回true(比如所有年份的4月17都匹配,4月17和5月17不匹配),两种实现可选:

实现方式1:分别提取属性对比

function isSameMonthDay(date1, date2) {
  // moment的month()返回值为0~11,和原生Date月份逻辑一致,直接对比即可
  return date1.month() === date2.month() && date1.date() === date2.date();
}

实现方式2:统一年份后调用moment原生方法

function isSameMonthDay(date1, date2) {
  // 克隆对象避免修改原日期,统一设置为任意相同年份后按日粒度对比
  return date1.clone().year(2000).isSame(date2.clone().year(2000), 'day');
}

两种实现效果完全一致,测试你给出的场景均符合预期:

  • 2019年4月17和2019年4月17:返回true
  • 2029年4月17和2019年4月17:返回true

内容的提问来源于stack exchange,提问作者Petar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 04:06:07