martes, 2 de diciembre de 2014

Calcular la edad con PHP

He visto en algunos posts que para calcular la edad en años de una persona hay problemas si la fecha de nacimiento es menor que el año 1970. Eso se debe a que pasan la fecha a tiempo UNIX y después hacen una resta y la vuelven a convertir a años.

Lo más simple que he visto es esta función que os dejo aquí, que simplemente coge primero la parte de meses y días de la fecha actual y la de nacimiento y mira si ya hemos pasado o todavía no. Después resta la parte de años de ambas fechas y finalmente ajusta.

function getAge($birthdate){
 $adjust = (date("md") >= date("md", strtotime($birthdate))) ? 0 : -1; // Si aún no hemos llegado al día y mes en este año restamos 1
 $years = date("Y") - date("Y", strtotime($birthdate)); // Calculamos el número de años 
 return $years + $adjust; // Sumamos la diferencia de años más el ajuste
}

Se puede complicar más haciendo que el formato de entrada se pueda configurar pero lo hemos puesto en formato inglés YYYY-MM-DD. Los resultados son los siguientes:

// Hoy es 2 de diciembre de 2014
echo getAge("1919-02-21"); // devuelve 95

echo getAge("1952-12-07"); // devuelve 61

Espero que os sirva.

No hay comentarios:

Publicar un comentario