105

我有两个 Date 对象,我想计算小时差。

如果小时差小于 18 小时,我想将日期对象推送到数组中。

Javascript / jQuery,没关系;什么效果最好。

4

3 回答 3

261

最简单的方法是直接将日期对象彼此相减。

例如:

var hours = Math.abs(date1 - date2) / 36e5;

减法以毫秒为单位返回两个日期之间的差异。36e5是 的科学记数法60*60*1000,除以将毫秒差转换为小时。

于 2013-10-07T12:57:00.027 回答
45

尝试使用getTimemdn doc):

var diff = Math.abs(date1.getTime() - date2.getTime()) / 3600000;
if (diff < 18) { /* do something */ }

使用Math.abs()我们不知道哪个日期最小。这段代码可能更相关:

var diff = (date1 - date2) / 3600000;
if (diff < 18) { array.push(date1); }
于 2013-10-07T12:53:26.860 回答
8

使用通过调用valueOf日期对象获得的时间戳:

var diff = date2.valueOf() - date1.valueOf();
var diffInHours = diff/1000/60/60; // Convert milliseconds to hours
于 2013-10-07T12:52:50.733 回答