如何获得两个日期对象之间的小时差?

IT技术 javascript jquery date object
2021-03-06 06:42:00

我有两个 Date 对象,我想以小时为单位计算差异。

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

Javascript / jQuery,并不重要;什么效果最好。

3个回答

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

例如:

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

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

为了使代码对普通开发人员更具可读性,我会坚持使用 60*60*1000(或使用 3600000 进行注释)。36e5 或 3.6e6 假设开发人员知道科学记数法,但情况并非总是如此。
2021-04-21 06:42:00
我的工程师更愿意看到3.6e6标准化的科学记数法)而不是36e5. 然而,图书读者更喜欢360000.
2021-04-23 06:42:00
好方法,尽管由于大量处理不准确,我得到了 2.0001191666666664。我建议将结果提供给 Math.floor 就像var hours = Math.floor(Math.abs(date1 - date2) / 36e5);
2021-04-26 06:42:00
给他自己的。
2021-05-07 06:42:00
@Blazemonger 360 000?我更喜欢 3 600 000 ;)
2021-05-09 06:42:00

尝试使用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); }

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

var diff = date2.valueOf() - date1.valueOf();
var diffInHours = diff/1000/60/60; // Convert milliseconds to hours