Cómo validar una fecha en formato español en PHP

3min

Continuamos con los tutoriales de PHP y, en esta ocasión, explicamos cómo validar una fecha con el formato español día/mes/año (dd/mm/aaaa). Aunque la expresión es sencilla y apenas son unas líneas de código, nos garantiza que la fecha es válida en el calendario y, lo que es más importante, su estructura nos sirve de ejemplo para saber cómo abordar problemas más complejos.

El algoritmo que vamos a utilizar para la validación es válido para una fecha con formato en español y que, lógicamente, coincida con una fecha que exista realmente en el calendario. Por defecto, admitiremos que los días de cada mes no son superiores a 31 días y que los meses no sean mayores que 12.

Aunque el número de validaciones puede resultar alto, nos apoyaremos en las funciones que hay disponibles en PHP para facilitarnos el trabajo.

Índice

Separar todos los valores

La función explode de PHP es la que utilizaremos en primer lugar para descomponer la fecha en sus diferentes valores y creará un valor de cada uno por separado. Por tanto, tendremos día, mes y año por separado de la variable laFecha.

$Lafecha = '14/06/2018';
$valores = explode('/', $Lafecha);

Ejecutando este paso obtendremos una estructura de datos (o array, como se conoce en programación) $valores con los datos: [’14’, ’06’, ‘2018’].

A continuación comenzamos con las validaciones.

Verificar que tenemos el día, el mes y el año

La comprobación que debemos de realizar es que en el array generado, debe de haber 3 casillas, y esto lo haremos con la función count() de PHP, que nos devolverá el número que contiene ese array. De esta sencilla forma:

count($valores)

Comprobar que la fecha existe en el calendario

Tal vez la parte más «compleja” sea la que viene a continuación, pero que con la función de PHP checkdate() es algo totalmente inmediato.

Esta función recibe tres parámetros (mes, día y año). Si la fecha existe en el calendario devuelve true y si no recibe false. Lo que debemos pasar son los tres valores que tenemos en el array.

checkdate($valores[1], $valores[0], $valores[2])

Crear la función que comprueba la fecha en formato español

Por último y con el fin de obtener un código limpio que nos sirva para otras ocasiones, escribiremos una función que nos compruebe que la fecha es correcta.

function validacion_Lafecha_espanol($Lafecha){
 $valores = explode('/', $Lafecha);
 if(count($valores) == 3 & checkdate($valores[1], $valores[0], $valores[2])){
 return true;
 }
 return false;
 }

Lo que realmente hemos hecho con esta función es poner todos los puntos anteriores en un solo paso. Para ver el funcionamiento del ejemplo, invocamos la función y recogemos los valores devueltos. Usaremos var_dump(), al tratarse de valores booleanos, para mostrarlos en pantalla:

var_dump(validacion_Lafecha_espanol('21/07/1981'));
 var_dump(validacion_Lafecha_espanol('32/02/1981'));

Entre los tutoriales de PHP que hemos publicado te recomendamos  Funciones propias en PHP  y Repasamos los operadores más utilizados de PHP.

Fernán García de Zúñiga

Productos relacionados: