Lenguaje PHP

Calcular edad en PHP: Ejemplos completos

Calcular edad en PHP. Obtener la edad de una persona en un sistema web suele resultar muy importante y para obtener la edad solo nos bastaría registrar la fecha de su nacimiento. Sin embargo, a partir de esa fecha de nacimiento podríamos calcular la edad usando funciones nativas del PHP.

La mayoría de sistemas almacenan la fecha de nacimiento en una tabla de base de datos y podemos sacarle provecho y si no lo tiene sería conveniente incorporar una columna con nombre fecha de nacimiento.

Calcular edad en PHP
Calcular edad en PHP

Preguntas y respuestas: Calcular edad en PHP

A continuación, veremos una serie de preguntas y respuestas acerca de cómo calcular la edad de una persona con dos fechas dadas.

¿Por qué almacenar la fecha de nacimiento de un cliente en la base de datos?

Recordemos que las personas al pasar el tiempo su edad se van incrementando y si guardas su edad, con el paso de los años esos datos serán no válidos. Por lo tanto, se debería volver a pedir la edad al cliente.

Justamente, en ese momento es importante calcular la edad de manera dinámica usando un lenguaje de programación como PHP.

¿Cómo funciona el cálculo de edad con PHP?

El proceso es muy fácil, solo necesitamos saber la fecha de nacimiento del cliente (esta fecha fue previamente obtenida en un formulario de registro o ingresado por el registrador de clientes), podemos hacer el cálculo tomando la fecha actual menos la fecha de nacimiento, de esta manera se obtendrá la edad del cliente de manera dinámica.

El cálculo de la edad suele resultar un poco complicado si no conocemos las funciones de PHP y como aplicarlo para obtener la edad.

En este artículo vamos a aprender a obtener la edad a través de varios métodos. Por lo tanto, calcularemos la edad en PHP usando la fecha de nacimiento y la fecha actual, es decir usando dos fechas.

Ahora, la primera fecha viene a ser la fecha de nacimiento de la persona o cliente y la segunda viene a ser fecha actual (Hoy).

Calcular edad en PHP: 4 formas

A continuación, veremos 4 formas para poder obtener la edad a partir de la fecha de nacimiento.

1.- Primera Forma: Usando función

Obtener la edad es un cálculo muy usado plataformas web. Sin embargo, recordemos que es muy sencillo si tienes en cuenta algunos factores importantes como la fecha de nacimiento.

Por ejemplo, si has nacido en el 1998 y estamos en el año 2019, tu edad seria de 21 años siempre y cuando hayas sobrepasado el día y el mes de tu nacimiento.

function calculaedad($fechanacimiento){
  list($ano,$mes,$dia) = explode("-",$fechanacimiento);
  $ano_diferencia  = date("Y") - $ano;
  $mes_diferencia = date("m") - $mes;
  $dia_diferencia   = date("d") - $dia;
  if ($dia_diferencia < 0 || $mes_diferencia < 0)
    $ano_diferencia--;
  return $ano_diferencia;
}

Modo de uso de la Función

Solo tenemos que imprimir la función y entre paréntesis colocar la fecha de nacimiento, veamos el ejemplo de uso.

echo calculaedad ('1998-01-25'); 
// Imprimirá en el navegador: 21

Usando la función dentro de una cadena de texto, veamos el ejemplo.

echo "La edad del alumno es de:<b> ".calculaedad ('1998-01-25')." años. </b>";
// Imprimirá: La edad del alumno es de: 21 años.

Descripción.- Llamamos a la función “calculaedad()” con la fecha en formato “YYYY-mm-dd” como parámetro dado, al imprimir en el navegador nos devolverá la edad del cliente que nació en la fecha ingresada. Ejemplo: “echo calculaedad("1998-01-25");“.

2.- Segunda Forma: Usando diff y DateTime

Otra forma para obtener la edad es usando los métodos de la clase “DateTime()” de PHP, y usaremos el atributo “y” porque nos permite obtener los años en la diferencia de fechas dadas. Sin embargo, también podemos reemplazar por la “m” para que muestre la diferencia en meses o la letra “d” para los días, si fuera la necesidad, pero nos interesan los años(es decir la edad).

$fecha_nacimiento = new DateTime("1998-01-25");
$hoy = new DateTime();
$edad = $hoy->diff($fecha_nacimiento);

Modo de uso

echo $edad->y;
// Imprimirá: 21

3. Tercera Forma: Usando fecha de una Base de Datos

Recordemos, que la fecha en MySQL se almacenan en el formato “YYY-mm-dd“, (1998-01-25) y para este ejemplo la función que tenemos trabaja en el formato de fechas “dd-mm-YYYY“, es decir: (25-01-1998).

Para darle solución a este pequeño problema solo vamos a usar una función que formatea la fecha y lo convierte a la fecha deseada para este ejemplo.

function verfecha($vfecha)
{
$fch=explode("-",$vfecha);
$tfecha=$fch[2]."-".$fch[1]."-".$fch[0];
return $tfecha;
}

Ahora, la variable “$fnaci” alberga una fecha extraída de una base de datos ya sea por el ciclo WHILE o ciclo FOR. Ahora, por medio de la función “VERFECHA()“, formatearemos la fecha a “dd-mm-YYYY“, veamos el ejemplo.

// Fecha de nacimiento extraida de MySQL a travez de una consulta
$fnaci = verfecha($data['fnaci']); // Imprime: 25-01-1998

Una vez que tengamos el formato de fecha correcta, usaremos una función llamada “calcular_edad()”, que nos permitirá para calcular la edad que tiene una persona con el solo hecho de pasarle como parámetro la fecha de nacimiento.

function calcular_edad($fecha){
$dias = explode("-", $fecha, 3);
$dias = mktime(0,0,0,$dias[1],$dias[0],$dias[2]);
$edad = (int)((time()-$dias)/31556926 );
return $edad;
}

Ejemplo de uso de la función calcular edad

<?php
echo calcular_edad($fnaci);
// Imprimira: 21
?>

4.- Cuarta Forma: Usando date_diff

La edad de un cliente o paciente en un determinado sistema web suele ser muy imprescindible para tomar decisiones. Por ejemplo, la edad de un paciente para recetarle tal tratamiento o quizás si es una farmacia para hacerle un descuento para el cliente si posee una determinada edad.

Para ello, solo debemos calcular la edad del usuario a partir de su fecha de nacimiento de manera dinámica. A continuación, mostraremos otro método en PHP para calcular la edad a partir de la fecha de nacimiento del cliente.

El siguiente método usaremos las siguientes funciones:

  1. a) Función date()
  2. b) Función date_create()
  3. c) Función date_diff()

Estas funciones se utilizan para calcular la edad del usuario a partir de su fecha de nacimiento y la fecha actual en PHP.

$fecha_nacimiento = "25-01-1998";
$dia_actual = date("Y-m-d");
$edad_diff = date_diff(date_create($fecha_nacimiento), date_create($dia_actual));

Ejemplo de uso

Hemos asignado la letra “y” para obtener los años de diferencia, por consiguiente la edad del cliente.

echo 'Mi edad es: '.$edad_diff->format('%y');
// Imprimira: Mi edad es: 21

Una forma muy fácil de implementar y usemos el código anterior para obtener la edad del cliente desde la fecha de nacimiento utilizando las funciones de fecha PHP.

CONCLUSIÓN

En este artículo a través de cuatro métodos hemos aprendido a obtener la edad con una fecha estática o una fecha extraída de una base de datos.

Usando funciones obtendremos un código ordenado, fácil de mantener. Sin embargo, en un futuro podemos realizar cambios y reutilizar si la queremos usar desde otro código o clase PHP.

Espero que la presente explicación les haya gustado y además darles las gracias por su visita, hasta el próximo artículo.

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

4 comentarios

    1. Usa el script de la siguiente manera

      $date1 = new DateTime("1995-01-17");
      $date2 = new DateTime(date("Y-m-d"));
      $interval = $date1->diff($date2);
      echo "Diferencia: " . $interval->y . " años, " . $interval->m." meses, ".$interval->d." dias "; 
      // Por dias
      echo "
      Diferencia " . $interval->days . " dias ";
      
  1. Me gustaría que me ayudes como hago para que me muestre la consulta de la base de datos en un input y luego use este código para que me muestre los años en otro input para que al editar la información no se pierda esos datos
    format(‘%Y’)} años y {$edad->format(‘%m’)} meses”; // Aplicamos un formato al objeto resultante de la funcion y que me la ingrese a otro input

    ?>

    1. Hola Pablo
      Podrias utilizar de esta manera el script

      $date1 = new DateTime("1995-01-17");
      $date2 = new DateTime(date("Y-m-d"));
      $interval = $date1->diff($date2);
      echo "Diferencia: " . $interval->y . " años, " . $interval->m." meses, ".$interval->d." dias "; 
      // Por dias
      echo "
      Diferencia " . $interval->days . " dias ";

      El otro punto es obtener la informacion de la base de datos, aquí te dejo un enlace para que puedas hacerlo.
      La conexion php mysql

          $host = "localhost";
          $dbname = "setyongr";
          $username = "root";
          $password = "";
      
          try {
              // Buat Object PDO baru dan simpan ke variable $db
              $db = new PDO("mysql:host={$host};dbname={$dbname}", $username, $password);
              // Mengatur Error Mode di PDO untuk segera menampilkan exception ketika ada kesalahan
              $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
          } catch (PDOException $exception){
              die("Connection error: " . $exception->getMessage());
          }
      

      // La consulta de datos

          if(!isset($_GET['id'])){
              die("Error: ID no declarado");
          }
      
          $query = $db->prepare("SELECT * FROM `alumnos` WHERE id = :id");
          $query->bindParam(":id", $_GET['id']);
          $query->execute();
          if($query->rowCount() == 0){
              die("Error: ID no declarado");
          }else{
              $data = $query->fetch();
          }
      

      // la fecha extraida

      
      <input required type="text" name="nama" placeholder="Nama" value=""/>
      // en el Value del input colocas:
       echo $data['fecha'];
      

      Una ves que obtienes el resultado del registro lo puedes usar en input y hacer trabajar las funciones del PHP

      https://www.baulphp.com/consultar-datos-mysql-mediante-pdo-ejemplos/

      Saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba