Blog Reacción Estudio

¡Tu zona de aprendizaje!

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.");
}