如何获得两个日期对象之间的小时差? [复制]
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;
减法以毫秒为单位返回两个日期之间的差异。 36e5
是 60*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中获得浮动或十进制的两个日期时间之间的小时差