Foros del Web » Programando para Internet » PHP »

Otro cálculo de edad (con años, meses y días) en php

Estas en el tema de Otro cálculo de edad (con años, meses y días) en php en el foro de PHP en Foros del Web. Hola. Para una aplicación necesité obtener la edad con el formato de "Tengo x años, x meses y x días" y lo publico aquí, por ...
  #1 (permalink)  
Antiguo 07/12/2006, 05:24
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Otro cálculo de edad (con años, meses y días) en php

Hola. Para una aplicación necesité obtener la edad con el formato de "Tengo x años, x meses y x días" y lo publico aquí, por si alguien lo necesita. Estoy convencido que esto ya existe en la red (de hecho, la base la tomé de algún sitio que ahora no recuerdo), pero como no lo encontré, lo publico en este estupendo foro.

Está basado en restar los años, meses y días, y se tiene en cuenta que tanto los meses como los días podrían dar negativo, para reajustarlos.

Código PHP:
<?php
$fecha_de_nacimiento 
"1948-05-11";
$fecha_actual date ("Y-m-d");
//$fecha_actual = date ("2006-03-05"); //para pruebas

echo "<br>Hoy es $fecha_actual";
echo 
"<br>Naciste el $fecha_de_nacimiento";

// separamos en partes las fechas
$array_nacimiento explode "-"$fecha_de_nacimiento );
$array_actual explode "-"$fecha_actual );

$anos =  $array_actual[0] - $array_nacimiento[0]; // calculamos años
$meses $array_actual[1] - $array_nacimiento[1]; // calculamos meses
$dias =  $array_actual[2] - $array_nacimiento[2]; // calculamos días

//ajuste de posible negativo en $días
if ($dias 0)
{
    --
$meses;

    
//ahora hay que sumar a $dias los dias que tiene el mes anterior de la fecha actual
    
switch ($array_actual[1]) {
           case 
1:     $dias_mes_anterior=31; break;
           case 
2:     $dias_mes_anterior=31; break;
           case 
3
                if (
bisiesto($array_actual[0]))
                {
                    
$dias_mes_anterior=29; break;
                } else {
                    
$dias_mes_anterior=28; break;
                }
           case 
4:     $dias_mes_anterior=31; break;
           case 
5:     $dias_mes_anterior=30; break;
           case 
6:     $dias_mes_anterior=31; break;
           case 
7:     $dias_mes_anterior=30; break;
           case 
8:     $dias_mes_anterior=31; break;
           case 
9:     $dias_mes_anterior=31; break;
           case 
10:     $dias_mes_anterior=30; break;
           case 
11:     $dias_mes_anterior=31; break;
           case 
12:     $dias_mes_anterior=30; break;
    }

    
$dias=$dias $dias_mes_anterior;
}

//ajuste de posible negativo en $meses
if ($meses 0)
{
    --
$anos;
    
$meses=$meses 12;
}

echo 
"<br>Tu edad es: $anos años con $meses meses y $dias días";

function 
bisiesto($anio_actual){
    
$bisiesto=false;
    
//probamos si el mes de febrero del año actual tiene 29 días
      
if (checkdate(2,29,$anio_actual))
      {
        
$bisiesto=true;
    }
    return 
$bisiesto;
}
?>
Un saludo.
  #2 (permalink)  
Antiguo 09/12/2006, 10:33
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 4 meses
Puntos: 4
Re: Otro cálculo de edad (con años, meses y días) en php

Felicidades, me parece muy bueno tu código y el hecho de que lo quieras compartir. Un saludo y te deseo mucha suerte
  #3 (permalink)  
Antiguo 09/12/2006, 10:58
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: Otro cálculo de edad (con años, meses y días) en php

Cita:
Iniciado por Erikfrancisco Ver Mensaje
Felicidades, me parece muy bueno tu código y el hecho de que lo quieras compartir. Un saludo y te deseo mucha suerte
Gracias Erikfrancisco y un saludo. Un detalle por tu parte por recomendar el código en alguna de tus respuestas.

Última edición por holahola; 09/12/2006 a las 11:08
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 04:06.