Emirodgar

Función JavaScript para validar fechas

Publicado el 19/05/2021 3 minutos de lectura Programación

Esta función en JavaScript nos permitirá de una forma rápida validar una fecha. Devolverá true o false dependiendo de si el formato es correcto o no. Para que sea más reutilizable la fecha se pasará como parámetro.

Validaciones

  • Esta función valida que el formato introducido sea dd/mm/yyyy, aunque se puede modificar de una forma sencilla para adaptarse a otros formatos.
  • Valida que todos los parámetros introducidos a excepción de las barras de separación / sean números.
  • También valida que el día y el mes se correspondan entre ellos, por ejemplo, en Abril no permitir introducir días mayores de 30.
  • Esta función también tiene en cuenta que cada 4 años es bisiesto.
    function validarFecha(fecha) {  
      
     try{        
	     var fecha = fecha.split("/");        
	     var dia = fecha[0];        
	     var mes = fecha[1];        
	     var ano = fecha[2];        
	     var estado = true;  
	      
	     if ((dia.length == 2) && (mes.length == 2) && (ano.length == 4)) {        
		     switch (parseInt(mes)) {        
			     case 1:dmax = 31;break;        
			     case 2: if (ano % 4 == 0) dmax = 29; else dmax = 28;        
			     break;        
			     case 3:dmax = 31;break;        
			     case 4:dmax = 30;break;        
			     case 5:dmax = 31;break;        
			     case 6:dmax = 30;break;        
			     case 7:dmax = 31;break;        
			     case 8:dmax = 31;break;        
			     case 9:dmax = 30;break;        
			     case 10:dmax = 31;break;       
			     case 11:dmax = 30;break;      
			     case 12:dmax = 31;break;       
		     }  
	           
		     dmax!=""?dmax:dmax=-1;if ((dia >= 1) && (dia <= dmax) && (mes >= 1) && (mes <= 12)) {        
		     for (var i = 0; i < fecha[0].length; i++) {         
			     diaC = fecha[0].charAt(i).charCodeAt(0);        
			     (!((diaC > 47) && (diaC < 58)))?estado = false:'';       
			     mesC = fecha[1].charAt(i).charCodeAt(0);        
			     (!((mesC > 47) && (mesC < 58)))?estado = false:'';       
		     }  
	      
	     } for (var i = 0; i < fecha[2].length; i++) {  
	      
	     anoC = fecha[2].charAt(i).charCodeAt(0);  
	      
	     (!((anoC > 47) && (anoC < 58)))?estado = false:'';        
	     }} else estado = false;        
	     return estado;    
         
    }catch(err){  
     alert("Error fechas");    
}