2

Calcular edad con PHP

Calcular la edad de una persona a partir de su fecha de nacimiento (o la edad de algo a partir de su fecha de creación) puede resultar tedioso al principio, ya que hay que hacer una serie de cálculos. Para empezar, debemos calcular el número de años que han pasado desde el año de su nacimiento hasta el año actual, obviamente, y después hay que afinar ese número comprobando el mes y el día para averiguar si su «cumpleaños» ya ha sido o todavía no ha pasado. Vayamos por partes.

Lo primero será extraer el día, el mes y el año de la fecha de nacimiento, que vamos a suponer que estará en formato yyyy-mm-dd al venir de una base de datos. Almacenamos esos valores en 3 variables: $y para el año, $m para el mes y $d para el día.

1
    list($y, $m, $d) = explode("-", $fecha_nacimiento);

Con estos 3 datos, restamos al año actual el año de nacimiento, al mes actual el mes de nacimiento y al día actual el día de nacimiento.

1
2
3
    $y_dif = date("Y") - $y;
    $m_dif = date("m") - $m;
    $d_dif = date("d") - $d;

Por último hay que tener en cuenta que si la diferencia de meses es 0 (estamos en el mismo mes en el que nacimos) pero la diferencia de días es menor que 0, aún no ha sido nuestro cumpleaños y habrá que restar 1 al año. Igualmente, si la diferencia de meses es negativo (aún no hemos llegado al mes de nuestro cumpleaños) también habrá que restar 1 año.

1
2
    if ((($d_dif < 0) && ($m_dif == 0)) || ($m_dif < 0))
        $y_dif--;

Si la diferencia de meses es positiva es porque ya hemos pasado el mes del cumpleaños y no habría que restar ningún año. Y si la diferencia de meses es 0 pero la diferencia de meses es positiva, también es porque el cumpleaños ya ha pasado y tampoco habría que restar ningún año.

Vamos a poner todo lo anterior en una función para no tener que escribirlo cada que vez que queramos usarlo.

1
2
3
4
5
6
7
8
9
function calcularEdad ($fecha_nacimiento) {
    list($y, $m, $d) = explode("-", $fecha_nacimiento);
    $y_dif = date("Y") - $y;
    $m_dif = date("m") - $m;
    $d_dif = date("d") - $d;
    if ((($d_dif < 0) && ($m_dif == 0)) || ($m_dif < 0))
        $y_dif--;
    return $y_dif;
}

Para llamar a esta función, sólo tendríamos que hacer por ejemplo:

1
calcularEdad("1934-10-25");

2 comentarios

  1. Muchas gracias por la función.

  2. Youtube también lo lleva claro: Transmitió en streaming (en algunos países) los partidos de la Copa América , así como la boda real de Inglaterra hace unos meses.

Comentar

*

*

Para añadir código formateado, escribe el código entre <pre lang="php" line="1"> y </pre>

Si quieres un avatar personalizado, créate uno en gravatar.com con tu dirección de correo. Cada vez que comentes con ese correo, aparecerá tu avatar personalizado.