Comparar fechas en javascript

Quiero comparar 2 fechas con un script que he hecho. Va perfecto, menos cuando la segunda fecha es el último día del mes. Este es el script:
fecha1 = "28/05/2005";
fecha2 = "31/05/2005";
fechaAUX = fecha1.split("/");
fechaLLEGADA = new Date()
fechaLLEGADA.setDate(fechaAUX[0]);
fechaLLEGADA.setMonth(eval(fechaAUX[1])-1);
fechaLLEGADA.setYear(fechaAUX[2]);
fechaLLEGADA.setHours(0);
fechaLLEGADA.setMinutes(0);
fechaLLEGADA.setSeconds(0);
fechaAUX = fecha2.split("/");
fechaSALIDA = new Date()
fechaSALIDA.setDate(fechaAUX[0]);
fechaSALIDA.setMonth(eval(fechaAUX[1])-1);
fechaSALIDA.setYear(fechaAUX[2]);
fechaSALIDA.setHours(0);
fechaSALIDA.setMinutes(0);
fechaSALIDA.setSeconds(0);
NumDias = (fechaSALIDA.getTime()/86400000)-(fechaLLEGADA.getTime()/86400000);
alert(fechaLLEGADA+"\n"+fechaSALIDA+"\n"+NumDias);
Si ves el alert, comprobarás lo que te digo. Y claro, siempre sale negativo la variable NumDias
¿Se te ocurre qué puede estar pasando?

1 respuesta

Respuesta
1
Puedo echarle un ojo a eso, pero lo mejor para comparar las fechas es ponerlas en formato aaaa/mm/dd y compararlas como strings.
Cuando haces el split, luego ponlo como:
var fechaAUX = fecha1.split("/");
var fechaParaComparar1 = fechaAUX[2]+fechaAUX[1]+fechaAUX[0]
Asi lo tendras como añomesdia y al comparar los strings te los comparara en condiciones.+
Si no te vale, te miro lo tuyo, pero igual esta idea te sirve bien... me comentas lo que sea, ¿ok?
Genial! Se me olvidó "pensar en inglés" al tratar con las fechas. Muchísimas gracias
Gracias por tu pronta respuesta.
Esa solución la había probado, después de buscar scripts de ejemplo. Pero lo que quiero calcular es el numero de días.
También es un poco saber porqué se produce ese "expediente X" ;-)
Ya se por que es... al hacer el new date te coge la fecha actual, por ejemplo, hoy 28 de abril.
Si haces el setDate a 31 antes que el mes, intenta poner el día a 31 de abril, que no existe, de modo que lo lleva a 1. Después al poner el mes a mayo, pues correcto, pero la fecha que te queda es 1 de mayo, a la que si le resta el 28 de mayo, te da -27 días.
Miralo aquí, primero haz el setMonth y luego el setDate:
fecha1 = "28/05/2005";
fecha2 = "31/05/2005";
fechaAUX = fecha1.split("/");
fechaLLEGADA = new Date()
fechaLLEGADA.setDate(fechaAUX[0]);
fechaLLEGADA.setMonth(eval(fechaAUX[1])-1);
fechaLLEGADA.setYear(fechaAUX[2]);
fechaLLEGADA.setHours(0);
fechaLLEGADA.setMinutes(0);
fechaLLEGADA.setSeconds(0);
document.write("Fecha1 " + fecha1 + "<br>");
document.write("Dia fecha2 " + fechaAUX[0] + "<br>");
document.write("Mes fecha2 " + (eval(fechaAUX[1])-1) + "<br>");
document.write("Año fecha2 " + fechaAUX[2] + "<br>");
document.write("Llegada" + fechaLLEGADA + "<br>");
fechaAUX = fecha2.split("/");
fechaSALIDA = new Date()
//fechaSALIDA.setDate(fechaAUX[0]);
fechaSALIDA.setMonth(eval(fechaAUX[1])-1);
fechaSALIDA.setYear(fechaAUX[2]);
fechaSALIDA.setDate(fechaAUX[0]);
fechaSALIDA.setHours(0);
fechaSALIDA.setMinutes(0);
fechaSALIDA.setSeconds(0);
document.write("Fecha2 " + fecha2 + "<br>");
document.write("Dia fecha2 " + fechaAUX[0] + "<br>");
document.write("Mes fecha2 " + (eval(fechaAUX[1])-1) + "<br>");
document.write("Año fecha2 " + fechaAUX[2] + "<br>");
document.write("Salida" + fechaSALIDA + "<br>");
document.write("Dia Salida " + fechaSALIDA.getDate() + "<br>");
document.write("Mes Salida " + fechaSALIDA.getMonth() + "<br>");
document.write("Año Salida " + fechaSALIDA.getYear() + "<br>");
NumDias = (fechaSALIDA.getTime()/86400000)-(fechaLLEGADA.getTime()/86400000);
document.write("Resta salida - llegada" + NumDias + "<br>");
//alert(fechaLLEGADA+"\n"+fechaSALIDA+"\n"+NumDias);

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas