2012-02-15 11 views
5

Qual è il modo più semplice per confrontare due date trascurando i timestamp. Ho due date firstDate provenienti dal database (convertito in data javascript) e secondDate provenienti da un campo di input di selezione data.
Essenzialmente per il mio algoritmo queste due date sono uguali in quanto non tiene conto del timestamp, ma il codice non lo considererà uguale a ha 01:00:00 in esso.
Come scartare completamente il timestamp per il confronto?Confronto data JavaScript che ignora il valore di timestamp

firstDate:

mar 24 Marzo 1992 01:00:00 GMT-0500 (Central Daylight Time)

secondDate:

mar 24 marzo 1992 00:00:00 GMT-0500 (ora legale centrale)

Codice:

if(firstDate < secondDate) { 

     alert("This alert shouldn't pop out as dates are equal"); 
    } 

risposta

5

Si potrebbe usare toDateString per sbarazzarsi del tempo, e riassegnare che al firstDate e le variabili secondDate. Potrebbe esserci un modo migliore, ma questo è quello che mi è venuto in mente.

firstDate = new Date(firstDate.toDateString()); 
secondDate = new Date(secondDate.toDateString()); 
if(firstDate < secondDate){ 
    alert("This alert shouldn't pop out as dates are equal"); 
} 

Inoltre, ti consigliamo di assicurarsi che si sta confrontando i valori delle date, e non controllare se sono lo stesso oggetto quando si confronta se sono uguali. Quindi qualcosa di simile.

firstDate.valueOf() == secondDate.valueOf() 

È inoltre possibile controllare il mio JSFiddle example.

+0

Derek, grazie per la risposta. Ho avuto la stessa soluzione chiedendomi se c'è un altro modo. Se nessun altro risponde, accetterò la tua risposta. – user1195192

0

La risposta di Derek è corretta. Un metodo alternativo senza creare nuove istanze di data consiste nel creare stringhe di data RFC3339.

var firstDateStr = firstDate.toISOString().slice(0, 10); 
var secondDateStr = secondDate.toISOString().slice(0, 10); 

return (firstDateStr < secondDateStr); 
+0

Nel mio esempio, non sto confrontando le stringhe, ma piuttosto 'new Date()' inizializzato con il risultato di 'toDateString()' – derekaug

+0

Ah, in effetti lo fai. Misread, mi dispiace. Modifica risposta. – Deestan

3

utilizzare la funzione Date.setHours(hrs, mins, secs, ms) con tutti zero argomenti per impostare l'ora del giorno a mezzanotte in entrambe le date (fare una copia se avete bisogno la data con il tempo per altri scopi).