PHP - calcular edad en años y meses

 
Vista:
sin imagen de perfil
Val: 54
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

calcular edad en años y meses

Publicado por Rodrigo (30 intervenciones) el 01/08/2016 01:52:33
Hola Amigos, nuevamente requiriendo un poco de ayuda.
Tengo este código
1
2
3
4
5
6
7
8
9
10
11
<?php
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;
}?>
 
<?php
echo calcular_edad('1989-10-01');
?> años

y me da como resultado la cantidad de años de una persona, pero no se como modificarlo para que de como resultado los años y los meses.
Leyendo entendí que hay que transformar la fecha a un formato para poder trabajarlo (multiplicarlo/dividirlo etc) lo que no entiendo del código es como hacerlo, si alguien pudiera explicarme para así yo poder hacerlo.
De ante manos gracias, les cuento que yo no soy programador, ni ingeniero, solo soy una persona que lleva un par de semanas leyendo y usando la lógica para aprender y entender las funciones php. Lo siento si mi consulta es muy basica.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

calcular edad en años y meses

Publicado por kip (877 intervenciones) el 01/08/2016 02:38:53
Hola, hay una funcion que provee PHP que te ofrece obtener la diferencia entre dos fechas, creo que aquella te serviria mejor, aqui el codigo que necesitas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
function calcular_edad($fecha){
$fecha_nac = new DateTime(date('Y/m/d',strtotime($fecha))); // Creo un objeto DateTime de la fecha ingresada
$fecha_hoy =  new DateTime(date('Y/m/d',time())); // Creo un objeto DateTime de la fecha de hoy
$edad = date_diff($fecha_hoy,$fecha_nac); // La funcion ayuda a calcular la diferencia, esto seria un objeto
return $edad;
}
 
 
$edad = calcular_edad('1999-12-31');
echo "Tiene {$edad->format('%Y')} años y {$edad->format('%m')} meses"; // Aplicamos un formato al objeto resultante de la funcion
 
?>

La funcion principal es date_diff, esta calcula la diferencia y te retorna un objeto DateTime.
http://php.net/manual/es/datetime.diff.php

Luego de obtener el objeto, aplicas un formato a este, otra funcion que te facilita PHP.
http://php.net/manual/es/datetime.format.php

Podrias hacerlo de alguna otra forma, pero es la que se me ocurre ahora, espero te sirva.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 54
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

calcular edad en años y meses

Publicado por Rodrigo (30 intervenciones) el 01/08/2016 03:02:31
Muchas Gracias!!!, tu codigo funciona perfecto, voy a leer sobre esas funciones y voy a ver si logro hacerla yo.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Pablo J.
Val: 29
Ha aumentado su posición en 213 puestos en PHP (en relación al último mes)
Gráfica de PHP

calcular edad en años y meses

Publicado por Pablo J. (29 intervenciones) el 10/08/2020 20:46:00
Hola, me gustaría usar este código pero que me tome el año ingresado en la db
$edad = calcular_edad('1999-12-31');<-Aqui que vaya ingresado el año que ya tengo en la base de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

calcular edad en años y meses

Publicado por javier (547 intervenciones) el 11/08/2020 09:27:32
pues se la pasas a la funcion despues de la consulta a la BBDD

1
2
3
$variable = $consulta_basedatos['fecha'];
 
calcular_edad($variable);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Pablo J.
Val: 29
Ha aumentado su posición en 213 puestos en PHP (en relación al último mes)
Gráfica de PHP

calcular edad en años y meses

Publicado por Pablo J. (29 intervenciones) el 11/08/2020 17:34:48
Así es como tengo el código para que me muestre los datos de la db

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php include '../config/conexion.php';
    $id=$_GET['id'];
    $sql="SELECT  * FROM pacientes where cedula ='$id' ";
    if (!$result=  mysqli_query($config, $sql)){
    die('Error:'.mysqli_error($config));
    }  else {
    if (mysqli_num_rows($result)> 0){
    while ($row=  mysqli_fetch_assoc($result)){
?>
<div class="col-md-3 form-group">
    <label>Fecha Nacimiento: </label> <?php echo $row['nacimiento'];?>
</div>
<div class="col-md-3 form-group">
    <label>Sexo: </label> <?php echo $row['sexo'];?>
</div>
<div class="col-md-2 form-group">
    <label>Discapacidad: </label> <?php echo $row['discapacidad'];?>
</div>
<div class="col-md-2 form-group">
    <label>Edad: </label>
    <?php
 
    function calcular_edad($nacimiento){
    $fecha_nac = new DateTime(date('Y/m/d',strtotime($nacimiento))); // Creo un objeto DateTime de la fecha ingresada
    $fecha_hoy =  new DateTime(date('Y/m/d',time())); // Creo un objeto DateTime de la fecha de hoy
    $edad = date_diff($fecha_hoy,$fecha_nac); // La funcion ayuda a calcular la diferencia, esto seria un objeto
    return $edad;
    }
 
 
    $edad = calcular_edad('1986-12-31');
    echo "Tiene {$edad->format('%Y')} años y {$edad->format('%m')} meses"; // Aplicamos un formato al objeto resultante de la funcion
 
    ?>
 
    <?php echo $row['edad'];?>
</div>
Me puedes ayudar no logro que funcione por favor, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar