2010-07-16 8 views
7

Estoy tratando de ordenar una lista de fechas, pero estoy luchando con fechas nulas que no se manejan de manera coherente.JavaScript Date.parse() y fechas nulas

así que necesito algo como:

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

pero estoy luchando para encontrar la sintaxis correcta. Gracias


Actualización: El error resultó ser un problema diferente. Tengo Datejs importado para usar en otra parte del proyecto, así que no me había dado cuenta de que Datejs define un método Date.parse() que estaba anulando el método estándar de JavaScript.

De todos modos, Datejs tiene un error extraño que significa que no maneja las fechas que comienzan con "A" correctamente. Así que, en realidad, mis fechas nulas estaban siendo ordenadas correctamente, solo las fechas de abril y agosto estaban siendo mezcladas con ellas.

La solución es utilizar el método Datejs Date.parseExact que le permite proporcionar una cadena de formato específica, consulte here.

Respuesta

9

parse() devuelve NaN en un análisis imposible, ¿qué tal si solo;

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

Puede utilizar isNaN (date) para comprobar la fecha no válida. ¿Está seguro de que quiere usar "MinValue; desde la fecha? Estaba ejecutando el js en Chrome y seguí indefinido.

+0

Personalmente me gusta esta prueba mejor, más agradable para la legibilidad al marcar 'if (! IsNaN (date))' que 'if (date! = 0)' – Keerigan

3

Si realmente está buscando la comparación de un objeto JS Date válido (que es 'vacío' asociada o no, pero por lo tanto, los valores predeterminados Jan 01, 1970) para comprobar si se trata de Falsey- - se puede utilizar:

var null_date = new Date(0); 

Esto creará un objeto Date que se establece en el mínimo (zero'th) marca de tiempo desde donde Date() comienza a contar ... que es equivalente a un objeto Date que nunca se ha configurado.

Cuestiones relacionadas