2013-10-07 27 views
37

私は2つのDateオブジェクトを取得しており、時間差を計算したいと思います。2つの日付オブジェクトの時間差を取得するにはどうすればよいですか?

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

Javascript/jQueryは本当に重要ではありません。最高の作品は何をしますか?

+7

この質問は、http://stackoverflow.com/questions/3224834/get-difference-between-2-dates-in-javascriptでは回答されませんでした。 OPは具体的に言う:時間をつかむ(日ではない)。 –

答えて

105

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

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

減算は、ミリ秒単位で2つの日付の間の差を返します。 36e560*60*1000の科学的表記法で、ミリ秒の差を時間に換算することで除算します。

+22

私の技術者は、 '36e5'の代わりに' 3.6e6'([正規化された科学記法](http://en.wikipedia.org/wiki/Scientific_notation))が好きです。しかし、本の読者は「360000」を好むだろう。 – Blazemonger

+8

彼自身にそれぞれ。 – Boaz

+0

この短いと作業コードありがとうBoaz –

3

日付オブジェクトにvalueOfを呼び出すことによって、あなたが得るタイムスタンプを使用します。

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

を使用して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); }