Foros del Web » Programando para Internet » Javascript »

comparar fechas

Estas en el tema de comparar fechas en el foro de Javascript en Foros del Web. Hola, tengo este script que me funciona perfectamente pero necesito que ademásme compruebe que la fecha de salida (campo salida) es superior a la de ...
  #1 (permalink)  
Antiguo 28/01/2010, 14:10
 
Fecha de Ingreso: enero-2008
Mensajes: 3
Antigüedad: 16 años, 2 meses
Puntos: 0
comparar fechas

Hola,
tengo este script que me funciona perfectamente pero necesito que ademásme compruebe que la fecha de salida (campo salida) es superior a la de entrada.El código actual solo verifica que los campos no estan en blanco y que los valores de la fecha sean correctos. Lo he intentado de varias formas pero no me funciona. ¿Podeís decirme que código debo añadir y donde exactamente?
Gracias de antemano por cualquier ayuda
arodes_


function validacion(formulario)
{
var er_nombre = /^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|ü|\s|\.|-)+$/ //letras, '.' y '-' o vacio
var er_adultos = /^([0-9\s\+\-])+$/ //numeros, espacios, + o -
var er_menores = /^([0-9\s\+\-])+$/ //numeros, espacios, + o -
//fechas, formato dd/mm/aaaa o d/m/aa
//fechas, formato dd/mm/aaaa o d/m/aa
var er_mes31dias = /^([1-3]0|[0-2][1-9]|31|[0-9])\/(1|01|3|03|5|05|7|07|8|08|10|12)\/(1999|20[0-1][0-9]|2020)$/
var er_mes30dias = /^([1-3]0|[0-2][1-9]|[0-9])\/(4|04|6|06|9|09|11)\/(1999|20[0-1][0-9]|2020)$/
var er_mes28dias = /^([1-2]0|[0-2][1-8]|[0-1]9|[0-9])\/(02|2)\/(1999|200[1-3]|200[5-7]|2009|201[0-1]|201[3-5]|201[7-9])$/
var er_mes29dias = /^([1-2]0|[0-2][1-9]|[0-9])\/(02|2)\/(2000|2004|2008|2012|2016|2020)$/
//direccion de correo electronico
var er_email = /^(.+\@.+\..+)$/
var adults = formulario.adultos.value
var childrens = formulario.menores.value
var x

//comprueba 50 caracteres maximo
for(x = 1; x < 7; x++) {
if (formulario.elements[x].value.length > 50) {
alert('La lontitud máxima permitida para cualquier campo es de 50 caracteres.')
return false
}
}

//comprueba campo de nombre
if(!er_nombre.test(formulario.nombre.value)) {
alert('Contenido del campo NOMBRE no válido.')
return false

}

//comprueba la fecha segun calendario (hasta el 2020, ojo)
if (!(er_mes31dias.test(formulario.entrada.value) ||
er_mes30dias.test(formulario.entrada.value) ||
er_mes29dias.test(formulario.entrada.value) ||
er_mes28dias.test(formulario.entrada.value))) {
alert('Contenido del campo ENTRADA no válido.')
return false
}

//comprueba la fecha segun calendario (hasta el 2020, ojo)
if (!(er_mes31dias.test(formulario.salida.value) ||
er_mes30dias.test(formulario.salida.value) ||
er_mes29dias.test(formulario.salida.value) ||
er_mes28dias.test(formulario.salida.value))){
alert('Contenido del campo SALIDA no válido.');
return false;
}

//comprueba campo adultos (permite solo numeros entre 1 y 9)
if( !er_adultos.test(formulario.adultos.value) ) {
alert('Contenido del campo ADULTOS no válido.')
return false
}

if (adults > 3) {
alert('Contenido del campo Mayor de 3')
return false
}


//comprueba campo menores (si existen, solo numeros entre 1 y 9)
if( !er_menores.test(formulario.menores.value) ) {
alert('Contenido del campo MENORES no válido.')
return false
}

if (childrens > 2) {
alert('Contenido del campo MENORES no válido.')
return false
}

//comprueba campo de email
if(!er_email.test(formulario.email.value)) {
alert('Contenido del campo E-MAIL no válido.')
return false
}
alert('Los campos introducidos son CORRECTOS.')
return true //cambiar por return true para ejecutar la accion del formulario
}
</script>
  #2 (permalink)  
Antiguo 28/01/2010, 19:24
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: comparar fechas

me voy a basar solo en lo que has explicado, de modo que he leido el codigo de forma bien superficial. en teoria para comparar si una fecha es mayor que la otra solo tienes que compararla con el operador mayor que o menor que. pero por supuesto, para que esto sea posible ambas fechas tienen que estar representada por el objeto Date. en tu caso asumo que estan en forma de string. por ende, tienes que primero convertirlo a Date. para convertirlo, tienes que descomponer la fecha string segun los argumentos que recibe Date. los argumentos son en el siguiente orden: año, mes, dia, hora, minutos, segundos, milisegundos.

por ejemplo, si las fechas son 2010-01-21 y 2010-01-31 (año, mes, dia):
Código:
var init = "2010-01-21".split('-');
var final = "2010-01-31".split('-');
var dInit = new Date(init[0], init[1] - 1, init[2]); 
var dFinal = new Date(init[0], init[1] - 1, init[2]);
// el segundo argumento se resta uno (-1) porque los meses comienza desde 0;
alert(dInit < dFinal); // muestra true si dInit es una fecha menor que dFinal;
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 28/01/2010 a las 19:31

Etiquetas: comparar, fechas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:06.