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

Posted

技术标签:

【中文标题】如何获得两个日期对象之间的小时差? [复制]【英文标题】:How to get the hours difference between two date objects? [duplicate] 【发布时间】:2013-10-14 01:26:59 【问题描述】:

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

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

javascript / jQuery,没关系;最有效的方法。

【问题讨论】:

***.com/questions/3224834/… 没有回答这个问题。 OP 明确表示:GET HOURS (NOT DAYS)。 【参考方案1】:

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

例如:

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

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

【讨论】:

我的工程师更愿意看到3.6e6 (normalized scientific notation) 而不是36e5。然而,图书读者更喜欢360000 各有所长。 @Blazemonger 360 000?我更喜欢 3 600 000 ;) 好方法,尽管由于大量处理不准确,我得到 2.0001191666666664。我建议将结果提供给 Math.floor,例如 var hours = Math.floor(Math.abs(date1 - date2) / 36e5); 为了使代码对普通开发人员更具可读性,我会坚持使用 60*60*1000(或使用 3600000 并带有注释)。 36e5 或 3.6e6 假定开发人员知道科学记数法,但情况并非总是如此。【参考方案2】:

尝试使用getTime (mdn 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); 

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于如何获得两个日期对象之间的小时差? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在bigquery中获得浮动或十进制的两个日期时间之间的小时差

在 Moment Js 中获取两个日期之间的小时差

如何获得两个日期的时差,例如 x 天 y 小时 z 秒 t 分钟 [重复]

ruby 2中的日期时间减法?

两个日期融合交通情报(分析)之间的时差

如何获取两个日期时间字段的轨道分钟时差?