2012-02-15 10 views
5

¿Cuál es la forma más sencilla de comparar dos fechas descuidando las marcas de tiempo? Tengo dos fechas firstDate procedentes de la base de datos (convertida en javascript date) y secondDate procedentes de un campo de entrada de selector de fecha.
Esencialmente para mi algoritmo estas dos fechas son iguales ya que no toma en cuenta la marca de tiempo pero el código no lo considerará igual como firstDate tiene 01:00:00 en él.
¿Cómo descartar completamente la marca de tiempo para comparar?Comparación de fecha de Javascript que ignora el valor de la marca de tiempo

FirstDate:

Martes 24 de marzo de 1992 01:00:00 GMT-0500 (hora de verano)

secondDate:

Martes 24 de marzo 1992 00:00:00 GMT-0500 (Hora de verano central)

Código:

if(firstDate < secondDate) { 

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

Respuesta

5

Usted podría utilizar toDateString para deshacerse del tiempo, y que reasignar a la FirstDate y las variables secondDate. Puede haber una mejor manera, pero esto es lo que me vino a la 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"); 
} 

También, usted querrá asegurarse de que está comparando los valores de las fechas, y no comprobar si son el mismo objeto cuando se compara si son iguales. Entonces algo así como

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

También puede comprobar fuera de mi JSFiddle example.

+0

Derek gracias por la respuesta. Tenía la misma solución preguntándome si hay otra manera. Si nadie más respondiera, aceptaré tu respuesta. – user1195192

0

La respuesta de Derek es correcta. Un método alternativo sin crear nuevas instancias de fecha es crear cadenas de fecha RFC3339.

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

return (firstDateStr < secondDateStr); 
+0

En mi ejemplo, no estoy comparando cadenas, sino 'nueva Fecha()' inicializada con el resultado de 'toDateString()' – derekaug

+0

Ah, de hecho sí. Lo leí mal, lo siento. Editando respuesta – Deestan

3

utilizar la función Date.setHours(hrs, mins, secs, ms) con todos los argumentos cero para ajustar la hora del día a la medianoche en ambas fechas (hacer una copia si necesita la fecha con el tiempo para otros fines).

Cuestiones relacionadas