El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de JavaScript
Foros del Guru > JavaScript
Usuario como comparar fechas
Desconocido
Enviado - 16/9/2002
 
Necesito saber como se pueden comparar dos fechas con javaScript. Dada una fecha de alta necesito validar una fecha de baja que no pueda ser anterior a la de alta. Gracias de antemano.
 
Desconocido
Enviado - 14/10/2002
 
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..


La gata blanca
 
Desconocido
Enviado - 9/6/2004
 
Todavía no lo he probado, pero lo que me llama la atención a simple vista es el trozo de código del ParseInt..

Por qué hay que tratar los "08" y "09" antes de aplicarle el ParseInt?

No habría que tratarlos todos hasta el "01" ??

No entiendo porqué únicamente los "08" y "09"...

Gracias
 
Desconocido
Enviado - 22/6/2004
 
Hola:

Necesitaba algo para comparar fechas y al final me he decantado por esto, que creo lo mas sencillo y elegante:

teniendo dos variables de fecha(fec1string y fec2string) como formato string 'dd/mm/aaaa'

auxfec1=date.parse(fec1string);
auxfec2=date.parse(fec2string);

date.parse lo que hace es devolverte un numero entero, con lo cual la comparacion es asi de simple

if auxfec1>auxfec2{
alert('fecha auxfec1 mayor que fecha auxfec2');
}

Espero te haya servido de ayuda.
Un saludo,
Juanjo Lopez.
 
Desconocido
Enviado - 23/6/2004
 
La respuesta que di no es correcta para algunos casos, asi que mejor olvidarla.

Un saludo,
Juanjo Lopez.
 
Desconocido
Enviado - 25/6/2004
 
if ((document.theForm.fini.value.substring+document.theForm.fini.value.substring(3,5)+document.theForm.fini.value.substring(0,2)) > (document.theForm.ffin.value.substring(6,10)+document.theForm.ffin.value.substring(3,5)+document.theForm.ffin.value.substring(0,2)))
alert(' Intervalo de fechas incorrecto')

Kiko B.S.
 
Desconocido
Enviado - 25/6/2004
 
if ((document.theForm.fini.value.substring(6,10)+document.theForm.fini.value.substring(3,5)+document.theForm.fini.value.substring(0,2)) > (document.theForm.ffin.value.substring(6,10)+document.theForm.ffin.value.substring(3,5)+document.theForm.ffin.value.substring(0,2)))
alert(' Intervalo de fechas incorrecto')

Kiko B.S.
 
Desconocido
Enviado - 7/9/2004
 
La respuesta de Juanjo Lopez es correcta solo que el formato de la fecha debe ser mm/dd/yyyy en lugar de dd/mm/yyyy (por eso a el le fallaba en algunos casos).
Es que Java Script es muy americano jeje.
Ciaaaao.
 
Desconocido
Enviado - 18/10/2004
 
Hola:

He estado haciendo pruebas, y este metodo no estan bueno como parece, ya que me permite hacer esto: 30/20/2004, es decir me deja de meter el 30 como mes.

Saludos.
 
 

 

Contactos myStudio Network