Javascript 比较今天';s的日期与另一个日期同时返回错误的日期,为什么?

Javascript 比较今天';s的日期与另一个日期同时返回错误的日期,为什么?,javascript,momentjs,Javascript,Momentjs,我使用1.7.0尝试将今天的日期与另一个日期进行比较,但是diff函数表示由于某种原因,它们相隔1天 代码: var releaseDate = moment("2012-09-25"); var now = moment(); //Today is 2012-09-25, same as releaseDate console.log("RELEASE: " + releaseDate.format("YYYY-MM-DD")); console.log("NOW: " + now.for

我使用1.7.0尝试将今天的日期与另一个日期进行比较,但是
diff
函数表示由于某种原因,它们相隔1天

代码

var releaseDate = moment("2012-09-25");
var now = moment(); //Today is 2012-09-25, same as releaseDate  
console.log("RELEASE: " + releaseDate.format("YYYY-MM-DD"));
console.log("NOW: " + now.format("YYYY-MM-DD"));
console.log("DIFF: " + now.diff(releaseDate, 'days'));
RELEASE: 2012-09-25
NOW: 2012-09-25
DIFF: 1 
控制台

var releaseDate = moment("2012-09-25");
var now = moment(); //Today is 2012-09-25, same as releaseDate  
console.log("RELEASE: " + releaseDate.format("YYYY-MM-DD"));
console.log("NOW: " + now.format("YYYY-MM-DD"));
console.log("DIFF: " + now.diff(releaseDate, 'days'));
RELEASE: 2012-09-25
NOW: 2012-09-25
DIFF: 1 
想法?

基于(和简短的测试),moment.js围绕日期对象创建包装。声明:

var now = moment();
var releaseDate = moment("2012-09-25");
创建一个“时刻”对象,该对象的核心是一个新的日期对象,就像由
new Date()
创建一样,因此小时、分钟和秒将设置为当前时间

声明:

var now = moment();
var releaseDate = moment("2012-09-25");
创建一个时刻对象,该对象的中心有一个新的日期对象,就像通过
newdate(2012,8,25)
创建一样,其中本地时区的小时、分钟和秒都将设置为零

moment.diff
返回一个基于两个日期之间四舍五入的毫秒差的值。要查看完整值,请将
true
作为第三个参数传递:

 now.diff(releaseDate, 'days', true)
 ------------------------------^
因此,它将取决于代码运行的时间和本地时区
now.diff(releaseDate,“days”)
是零还是一,即使在同一本地日期运行也是如此

如果只想比较日期,请使用:

var now = moment().startOf('day'); 

这将在本地时区将时间设置为00:00:00。

RobG的答案对于这个问题是正确的,所以这个答案只适用于那些搜索如何在momentjs中比较日期的人

我试图像上面提到的那样使用startOf(“day”):

var compare = moment(dateA).startOf('day') === moment(dateB).startOf('day');
这对我不起作用

我必须使用:


我有1.7.0,我测试了你的代码,我得到了
DIFF:0
-你确定你的时刻没有任何变化吗.js?我想这与时区或utc/本地有关。如果我记录
releaseDate
now
.hours()
,我会得到不同的结果。如果我使用
var now=moment().sod()
它目前可以正常工作,但我不确定我有多信任它。谢谢你的解释!使用
moment().sod()
消除了我的舍入问题,正如使用您提到的第三个参数测试的那样。请注意
sod
仅适用于版本2,此时您必须使用
startOf('day')