2010-07-16 9 views
7

Sto cercando di ordinare un elenco di date, ma ho difficoltà con date nulle che non vengono gestite in modo coerente.JavaScript Date.parse() e date nulle

quindi ho bisogno di qualcosa di simile a:

var date = Date.parse(dateString); 
if (!date) { 
    date = Date.MinValue; 
} 

ma io sto lottando per trovare la sintassi corretta. Grazie


Update: Il bug si è rivelato essere un problema diverso. Ho importato Datejs per l'utilizzo in un'altra parte del progetto, quindi non mi ero reso conto che Datejs definisce un metodo Date.parse() che stava sovrascrivendo il metodo JavaScript standard.

In ogni caso, Datejs ha un bug strano che significa che non gestisce le date che iniziano con "A" correttamente. Quindi, in realtà, le mie date nulle venivano ordinate correttamente, erano solo le date di aprile e agosto a essere confuse con loro.

La correzione consiste nell'utilizzare il metodo Datejs Date.parseExact che consente di fornire una stringa di formato specifica, vedere here.

risposta

9

parse() restituisce NaN su un'analisi impossibile, quindi come circa giusto;

var date = Date.parse(dateString) || 0; 
4

È possibile utilizzare isNaN (data) per verificare la data non valida. Sei sicuro di voler utilizzare "MinValue; da Data?" Sto eseguendo il js su Chrome e continuavo a diventare indefinito

+0

Personalmente come questo test migliore, più bello per la leggibilità quando si controlla 'if (! IsNaN (data))' di 'if (data! = 0)' – Keerigan

3

Se stai veramente cercando il confronto di un oggetto Data JS valido (che è 'vuoto' o disinserire ma di conseguenza le impostazioni predefinite gen 01, 1970) per verificare se è Falsey - è possibile utilizzare:

var null_date = new Date(0); 

questo creerà un oggetto Date che è impostato al minimo (zero'th) timestamp da dove Date() inizia il conteggio ... che è equivoco a un oggetto Date che non è mai stato impostato

Problemi correlati