web-dev-qa-db-ja.com

2つの日付オブジェクトの時間差を取得する方法は?

2つのDateオブジェクトを取得し、時間の差を計算したいと思います。

時間の差が18時間未満の場合、日付オブジェクトを配列にプッシュします。

Javascript/jQueryは、重要ではありません。何が一番うまくいくのか。

66
Anoniem Anoniem

最も簡単な方法は、日付オブジェクトを互いに直接減算することです。

例えば:

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

減算は、2つの日付の差をミリ秒単位で返します。 36e5は、60*60*1000の科学表記法であり、ミリ秒の差を時間に変換するための除算です。

168
Boaz

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); }
34
leaf

日付オブジェクトでvalueOfを呼び出して取得したタイムスタンプを使用します。

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