2013-10-07 17 views
37

Ho due oggetti Date e voglio calcolare la differenza in ore.Come ottenere la differenza di ore tra due oggetti data?

Se la differenza in ore è inferiore a 18 ore, desidero spostare l'oggetto data in una matrice.

Javascript/jQuery, non ha molta importanza; ciò che funziona meglio farà.

+7

Questa domanda non ha avuto risposta in http://stackoverflow.com/questions/3224834/get-difference-between-2-dates-in-javascript. OP dice specificamente: OTTIENI ORE (NON GIORNI). –

risposta

105

Il modo più semplice sarebbe quello di sottrarre direttamente gli oggetti data l'uno dall'altro.

Ad esempio:

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

La sottrazione restituisce la differenza tra le due date in millisecondi. 36e5 è la notazione scientifica per 60*60*1000, che divide in base al quale converte la differenza in millisecondi in ore.

+22

L'ingegnere in me preferirebbe vedere '3.6e6' ([notazione scientifica normalizzata] (http://en.wikipedia.org/wiki/Scientific_notation)) invece di' 36e5'. Il lettore di libri, tuttavia, preferirebbe '360000'. – Blazemonger

+8

A ciascuno il suo. – Boaz

+0

questo codice breve e funzionante Grazie Boaz –

3

Utilizzare il timestamp si ottiene chiamando valueOf sull'oggetto Data:

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

Prova utilizzando getTime (mdn doc):

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

Usando Math.abs() non sappiamo quale data è il più piccolo . Questo codice è probabilmente più rilevante:

var diff = (date1 - date2)/3600000; 
if (diff < 18) { array.push(date1); } 
Problemi correlati