我正在使用moment.js 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
想法?
发布于 2012-09-26 10:55:13
基于documentation (和简短的测试),moment.js创建了date对象的包装器。声明:
var now = moment();
创建一个"moment“对象,它的核心有一个新的Date对象,就像由new Date()
创建的一样,因此小时、分钟和秒将被设置为当前时间。
声明:
var releaseDate = moment("2012-09-25");
创建一个moment对象,该对象的核心将创建一个新的Date对象,就像由new Date(2012, 8, 25)
创建的一样,其中,对于本地时区,小时、分钟和秒都将设置为零。
moment.diff
根据两个日期之间的四舍五入的差值(以ms为单位)返回一个值。要查看完整的值,请将true
作为第三个参数传递:
now.diff(releaseDate, 'days', true)
------------------------------^
因此,它将取决于运行代码的时间和本地时区now.diff(releaseDate, 'days')
是0还是1,即使在相同的本地日期运行也是如此。
如果您只想比较日期,则使用:
var now = moment().startOf('day');
这会将时间设置为当地时区的00:00:00。
发布于 2014-01-19 05:14:29
RobG的答案对于这个问题是正确的,所以这个答案只适用于那些正在搜索如何比较momentjs中的日期的人。
我尝试像上面提到的那样使用startOf('day'):
var compare = moment(dateA).startOf('day') === moment(dateB).startOf('day');
这对我不起作用。
我不得不使用isSame
var compare = moment(dateA).isSame(dateB, 'day');
https://stackoverflow.com/questions/12593653
复制相似问题