comparar dos fechas en javascript

nandom
01 de Septiembre del 2009
Hola quisiera saber como puedo validar ó comparar dos fechas... desde, hasta, es decirque la fecha "desde" no sea mayor que la de "hasta", Gracias

ugho
01 de Septiembre del 2009
Estimados:
La primera respuesta de nelw funciona a la perfección
Saludos

rchicangana
01 de Septiembre del 2009
yo tengo esta y funciona perfecto y es mas cortica jejeje


function compara_fecha(fecha, fecha2)
{
suma=new Date(fecha.substring(6,10),fecha.substring(3,5)-1,fecha.substring(0,2));
var anio=suma.getYear();
var mes =suma.getMonth()+1;
var dia =suma.getDate();
suma2=new Date(fecha2.substring(6,10),fecha2.substring(3,5)-1,fecha2.substring(0,2));
var anio2=suma2.getYear();
var mes2 =suma2.getMonth()+1;
var dia2 =suma2.getDate();
if(anio<anio2){
return false;
}
if(anio<=anio2 && mes<=mes2)
{
if(anio==anio2 && mes==mes2 && dia>dia2)
{
return false;
}
return true;
}
else
{
return false;
}

}

nelw
01 de Septiembre del 2009
es sencillo

creas dos objetos de tipo fecha

fechaHoy = new Date(anioH+"/"+mesH+"/"+diaH);
otraFecha = new Date(anio+"/"+mes+"/"+dia);


if(fechaHoy < 'o el operador que quieras' otraFecha ){
tu codogo....
}

jorge chileno
01 de Septiembre del 2009
bueno.. aquí encontré una pequeña funcion que hace esto.. pero el formato de entrada es DD/MM/YYYY...

se entiende?
function Comparar_Fecha(Obj1,Obj2)
{
String1 = document.form.fecha_desde.value;
String2 = document.form.fecha_hasta.value;
// Si los dias y los meses llegan con un valor menor que 10
// Se concatena un 0 a cada valor dentro del string
if (String1.substring(1,2)=="/") {
String1="0"+String1
}
if (String1.substring(4,5)=="/"){
String1=String1.substring(0,3)+"0"+String1.substring(3,9)
}

if (String2.substring(1,2)=="/") {
String2="0"+String2
}
if (String2.substring(4,5)=="/"){
String2=String2.substring(0,3)+"0"+String2.substring(3,9)
}

dia1=String1.substring(0,2);
mes1=String1.substring(3,5);
anyo1=String1.substring(6,10);
dia2=String2.substring(0,2);
mes2=String2.substring(3,5);
anyo2=String2.substring(6,10);


if (dia1 == "08") // parseInt("08") == 10 base octogonal
dia1 = "8";
if (dia1 == '09') // parseInt("09") == 11 base octogonal
dia1 = "9";
if (mes1 == "08") // parseInt("08") == 10 base octogonal
mes1 = "8";
if (mes1 == "09") // parseInt("09") == 11 base octogonal
mes1 = "9";
if (dia2 == "08") // parseInt("08") == 10 base octogonal
dia2 = "8";
if (dia2 == '09') // parseInt("09") == 11 base octogonal
dia2 = "9";
if (mes2 == "08") // parseInt("08") == 10 base octogonal
mes2 = "8";
if (mes2 == "09") // parseInt("09") == 11 base octogonal
mes2 = "9";

dia1=parseInt(dia1);
dia2=parseInt(dia2);
mes1=parseInt(mes1);
mes2=parseInt(mes2);
anyo1=parseInt(anyo1);
anyo2=parseInt(anyo2);

if (anyo1>anyo2)
{
return false;
}

if ((anyo1==anyo2) && (mes1>mes2))
{
return false;
}
if ((anyo1==anyo2) && (mes1==mes2) && (dia1>dia2))
{
return false;
}

return true;
}


Se debe llamar con de esta forma

if (!Comparar_Fecha(fecha_1, fecha_2)){
alert("La fecha Hasta No debe ser menor que la fecha Desde.");
return false};


esepro quede claro..