Funciones para validar fechas con Javascript
Seguramente a la hora de validar fechas con Javascript has tenido que ponerte a buscar funciones para relizar estas validaciones.
Bien, pues hoy os vamos a dejar una serie de funciones listas para utilizar:
- Validar el formato de la fecha:
function validarFormatoFecha(campo) { var RegExPattern = /^\d{1,2}\/\d{1,2}\/\d{2,4}$/; if ((campo.match(RegExPattern)) && (campo!='')) { return true; } else { return false; } }
Esta función nos validará utilizando una expresión regular si nuestra variable corresponde con el formato de una fecha corriente, como por ejemplo – 13/09/1985. Devolverá true si la fecha es correcta y false si es incorrecta o la variable está vacía.
- Validar si la fecha introducida es real:
Para validar si la fecha introducida es real, es decir, que corresponde al calendario, tenemos las 2 funciones siguientes.
function existeFecha(fecha){ var fechaf = fecha.split("/"); var day = fechaf[0]; var month = fechaf[1]; var year = fechaf[2]; var date = new Date(year,month,'0'); if((day-0)>(date.getDate()-0)){ return false; } return true; } function existeFecha2 (fecha) { var fechaf = fecha.split("/"); var d = fechaf[0]; var m = fechaf[1]; var y = fechaf[2]; return m > 0 && m < 13 && y > 0 && y < 32768 && d > 0 && d <= (new Date(y, m, 0)).getDate(); }
Estas dos funciones serían las equivalentes a checkdate en PHP.
- Validar si la fecha introducida es anterior o menor a la actual:
function validarFechaMenorActual(date){ var x=new Date(); var fecha = date.split("/"); x.setFullYear(fecha[2],fecha[1]-1,fecha[0]); var today = new Date(); if (x >= today) return false; else return true; }
Esta función nos indica si la fecha introducida es anterior o menor que la fecha actual. Si devuelve true significa que la fecha es anterior, y si devuelve false significa que la fehca introducida es posterior a la actual.
Lo mejor es combinar estas funciones para validar nuestra fecha lo máximo posible y evitar que se introduzcan fechas erróneas. Por eso siempre deberíamos hacer lo siguiente:
var fecha = "13/09/1985"; if(validarFormatoFecha(fecha)){ if(existeFecha(fecha)){ alert("La fecha introducida es correcta."); }else{ alert("La fecha introducida no existe."); } }else{ alert("El formato de la fecha es incorrecto."); }