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

Ano*_*iem 70 javascript jquery date object

我有两个Date对象,我想计算小时数的差异.

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

Javascript/jQuery,并不重要; 什么是最好的将做.

Boa*_*oaz 178

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

例如:

var hours = Math.abs(date1 - date2) / 36e5;
Run Code Online (Sandbox Code Playgroud)

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

  • 我的工程师更愿意看到`3.6e6`([normalized scientific notation](http://en.wikipedia.org/wiki/Scientific_notation))而不是`36e5`.然而,书籍读者更喜欢"360000". (41认同)
  • 对每一个他自己. (14认同)
  • 很好的方法,虽然我得到2.0001191666666664由于大量处理不准确.我建议将结果提供给Math.floor,如`var hours = Math.floor(Math.abs(date1 - date2)/ 36e5);` (7认同)
  • @Blazemonger 360 000?我宁愿3 600 000;) (6认同)
  • 为了使代码对普通开发人员更具可读性,我会坚持使用 60*60*1000(或使用 3600000 进行注释)。36e5 或 3.6e6 假定开发人员知道科学记数法,但情况并非总是如此。 (6认同)

lea*_*eaf 34

尝试使用getTime(mdn doc):

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

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

var diff = (date1 - date2) / 3600000;
if (diff < 18) { array.push(date1); }
Run Code Online (Sandbox Code Playgroud)


Mat*_*ert 8

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

var diff = date2.valueOf() - date1.valueOf();
var diffInHours = diff/1000/60/60; // Convert milliseconds to hours
Run Code Online (Sandbox Code Playgroud)