将今天的日期与另一个日期进行比较会返回错误的日期,为什么?

2023-12-30

我在用着moment.js http://momentjs.com/1.7.0 尝试将今天的日期与另一个日期进行比较,但diff函数表示由于某种原因它们相隔 1 天。

code:

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'));

console:

RELEASE: 2012-09-25
NOW: 2012-09-25
DIFF: 1 

Ideas?


基于文档 http://momentjs.com/docs/#/displaying/difference/(和简短的测试),moment.js 围绕日期对象创建包装器。该声明:

var now = moment();

创建一个“时刻”对象,该对象的核心有一个新的 Date 对象,就像通过new Date(),因此小时、分钟和秒将设置为当前时间。

该声明:

var releaseDate = moment("2012-09-25");

创建一个 moment 对象,该对象的核心有一个新的 Date 对象,就像通过new Date(2012, 8, 25)其中本地时区的小时、分钟和秒都将设置为零。

moment.diff返回一个基于 a 的值rounded两个日期之间的差异(以毫秒为单位)。要查看完整值,请通过true作为第三个参数:

 now.diff(releaseDate, 'days', true)
 ------------------------------^

因此,这取决于代码运行的时间和本地时区是否now.diff(releaseDate, 'days')为零或一,即使在同一本地日期运行也是如此。

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将今天的日期与另一个日期进行比较会返回错误的日期,为什么? 的相关文章

随机推荐