Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Otro cálculo de edad (con años, meses y días) en php (http://www.forosdelweb.com/f18/otro-calculo-edad-con-anos-meses-dias-php-448497/)

holahola 07/12/2006 05:24

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.

Erikfrancisco 09/12/2006 10:33

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 :arriba:

holahola 09/12/2006 10:58

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

Iniciado por Erikfrancisco (Mensaje 1815174)
Felicidades, me parece muy bueno tu código y el hecho de que lo quieras compartir. Un saludo y te deseo mucha suerte :arriba:

Gracias Erikfrancisco y un saludo. Un detalle por tu parte por recomendar el código en alguna de tus respuestas.


La zona horaria es GMT -6. Ahora son las 10:05.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.