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

使用Moment.js判断两个日期是否相同时返回false如何解决

问题原因
  • 解析参数不匹配:你传入的'1635750314812'是毫秒级时间戳,但是指定的解析格式为YYYY/MM/DD,Moment.js无法按该格式正确解析时间戳,导致生成的beginningTime是无效日期,无法和正常生成的当前时间匹配。
  • 日期对比精度问题:isSame方法默认精确到毫秒级别,即便是同一天的两个时间,只要生成的毫秒数有差异,默认对比结果也会是false,仅判断是否为同一天需要指定对比精度为day。
修复后的实现代码
// 直接传入毫秒时间戳即可完成解析,也可以加格式标识'x'明确是毫秒时间戳
var beginningTime = moment(1635750314812, 'x'); 
// 生成当前时间不需要传undefined参数
var endTime = moment();
// 对比时指定精度为天,仅判断是否为同一日期
console.log(beginningTime.isSame(endTime, 'day'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
可选兼容方案

如果你需要严格按YYYY/MM/DD格式解析两个日期再对比,可以先将时间戳和当前时间都转成对应格式的字符串再解析:

var beginningTime = moment(moment(1635750314812).format('YYYY/MM/DD'), 'YYYY/MM/DD');
var endTime = moment(moment().format('YYYY/MM/DD'), 'YYYY/MM/DD');
// 此时两个日期对象都对应当天0点,毫秒数完全一致,默认对比也返回true
console.log(beginningTime.isSame(endTime));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:27:03