Validando fechas de forma sencilla en Javascript.

Siendo sincero es muy rara la vez que tengo que trabajar con fechas en Javascript, pero hoy me encontré con la necesidad de validar un campo fecha y decidí hacerlo de la siguiente manera. Aclaro que este validador es muy sencillo. De hecho es extremadamente sencillo, pero efectivo. No he visto en todo el tiempo que he trabajado con javascript una función para validar fechas tan sencilla. Si alguien encuentra un defecto en ella, les agradecería el feedback.

var validarFecha = function(fecha){
 //Funcion validarFecha 
 //Escrita por Buzu feb 18 2010. (FELIZ CUMPLE BUZU!!!
 //valida fecha en formato aaaa-mm-dd
 var fechaArr = fecha.split('-');
 var aho = fechaArr[0];
 var mes = fechaArr[1];
 var dia = fechaArr[2];
 
 var plantilla = new Date(aho, mes - 1, dia);//mes empieza de cero Enero = 0

 if(!plantilla || plantilla.getFullYear() == aho && plantilla.getMonth() == mes -1 && plantilla.getDate() == dia){
 return true;
 }else{
 return false;
 }
}

Como puedes ver hace uso de Date evitando así esos códigos para checar si el año es bisiesto o no y evitar checar que los meses tengan la cantidad de días correcta. El uso de Date de forma inteligente es la clave en esta función.

Espero que les pueda ser útil.

4 thoughts on “Validando fechas de forma sencilla en Javascript.

    • La funcion simplemente toma una cadena de texto. por ejemplo 2013-01-01 y valida que sea un fecha correcta. Por ejemplo, 2013-99-99 no es una fecha valida, y la funcion te daria false como valor de retorno indicando asi que la fecha no es valida.

  1. Muy interesante tu utilidad, pero en la parte:

    if(!plantilla || plantilla.getFullYear() == aho && plantilla.getMonth() == mes -1 && plantilla.getDate() == dia){
    return true;

    debería ser:

    if(plantilla && plantilla.getFullYear() == aho && plantilla.getMonth() == mes -1 && plantilla.getDate() == dia){
    return true;

    Es decir, plantilla es true para entrar a valorar la fecha correcta no?
    Un saludo.

    • Hm… Interesante. Tu punto es muy valido y me puse a hacer unas pruevas y he descubierto algunos datos curiosos sobre el objeto Date. Voy a escribir un post al respecto, aun que ahora el blog lo mantengo en ingles… Espero verte por aca cuando lo escriba😀

Comments are closed.