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

如何使用moment判断当前日期与指定日期是否为同一天

问题根因

你出现报错和比较结果不符合预期的核心原因是操作顺序错误:
你先将moment对象通过format方法转为了DD/MM/YYYY格式的字符串,这种格式不属于moment默认支持的标准RFC2822/ISO日期格式,后续再用这个字符串初始化moment(today)实例时,moment无法可靠解析,不仅会抛出弃用警告,解析出的日期对象也不符合预期,最终isSame返回false。

正确实现方案

方案1(推荐):直接用moment对象按天粒度比较

不需要提前格式化转字符串,直接调用isSame时指定比较粒度为day即可判断是否为同一天,性能更高也不会出现格式兼容问题:

// 获取当前日期的moment对象
const today = moment()
// 传入标准ISO格式字符串构造目标日期moment对象
const expiry = moment('2021-09-28')
// 第二个参数指定比较到天的粒度
console.log(today.isSame(expiry, 'day')) // 输出 true

方案2:直接比较格式化后的字符串

如果你的场景确实需要先转字符串,直接比较两个相同格式的字符串即可,不需要再用moment包裹解析:

const today = moment().format('DD/MM/YYYY')
const expiry = moment('2021-09-28').format('DD/MM/YYYY')
console.log(today === expiry) // 输出 true

注意事项

  • 构造moment对象时优先传入YYYY-MM-DD这类标准ISO格式的日期字符串,避免使用2021/09/28等非标准格式,减少不同浏览器的解析差异问题。
  • isSame方法支持传入year、month、hour、minute等不同粒度参数,可以按需调整比较精度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:54:03