En este post te mostraré cómo calcular los años que ha vivido una persona (es decir, su edad) a partir de su fecha de nacimiento (con exactitud, claramente) en PHP.
Lo que haremos será analizar la fecha de nacimiento, tomar la diferencia con la fecha de hoy y obtener la diferencia en años. Todo eso usando funciones y clases que PHP ya trae.
Por cierto, el método aquí listado funciona de maravilla incluso si hay años bisiestos de por medio.
Requisitos
Necesitamos la fecha en un formato entendible por PHP. Yo recomiendo YYYY-MM-DD
por ejemplo 2020-05-05.
También necesitamos PHP 5 o una versión superior; cosa que ya deberías tener. Esto es para la clase DateTime
.
La función
Lo que hacemos es crear dos instancias de DateTime
; una con la fecha de nacimiento, y otra con el tiempo actual, es decir, la fecha de hoy.
Más tarde invocamos a la función diff
, lo que nos dará otra fecha (que tiene la diferencia de fechas).
Finalmente formateamos la fecha resultante y solo extraemos los años. Para ello invocamos a format
y le indicamos que solo queremos el número de años, con %y
.
<?php
function obtener_edad_segun_fecha($fecha_nacimiento)
{
$nacimiento = new DateTime($fecha_nacimiento);
$ahora = new DateTime(date("Y-m-d"));
$diferencia = $ahora->diff($nacimiento);
return $diferencia->format("%y");
}
Así de simple queda la función. Recibe una cadena que indica la fecha de nacimiento, y devuelve el número de años que tiene la persona.
Obtener edad a partir de fecha en PHP
Ahora veamos cómo usar la función. Puedes usarla de distinta manera y almacenar el resultado en donde gustes (por ejemplo, una base de datos).
Yo simplemente colocaré un arreglo con fechas y luego al recorrerlo imprimiré con printf los valores con el resultado:
<?php
// parzibyte.me/blog
function obtener_edad_segun_fecha($fecha_nacimiento)
{
$nacimiento = new DateTime($fecha_nacimiento);
$ahora = new DateTime(date("Y-m-d"));
$diferencia = $ahora->diff($nacimiento);
return $diferencia->format("%y");
}
// Probar
$fechas = ['2020-05-05', '1990-01-01', '1999-01-01', '2002-12-31'];
foreach($fechas as $fecha){
printf("Edad para %s: %d\n", $fecha, obtener_edad_segun_fecha($fecha));
}
La salida al ejecutarlo es:
como puedo conseguri que me calcule la edad a partir de un control tipo date y lo coloque la edad en un campo text
debo colocar todo esto en el archivo funtions.php ó donde ?
gracias
Hola. Gracias por sus comentarios. Si tiene alguna consulta con gusto lo atiendo en https://parzibyte.me/#contacto
Saludos!