PHP - calcular edad con una lista de opciones de año/mes/dia

 
Vista:

calcular edad con una lista de opciones de año/mes/dia

Publicado por Gabriel (33 intervenciones) el 22/11/2013 20:24:41
Saludos , alguien podria darme una idea de como calcular la edad en funcion de una lista de opciones donde esten los años, meses y dias...ojo no pido que me hagan el script solo que me den una idea...tengo este codigo pero no me sirve de mucho, gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
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
echo calculaedad ('1979-10-15'); // Imprimirá: 30
?>
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

calcular edad con una lista de opciones de año/mes/dia

Publicado por Mari Carmen (145 intervenciones) el 23/11/2013 05:23:55
Muy sencillo, le das tus parámetros de entrada a la función mktime http://us2.php.net/manual/es/function.mktime.php . Ésta te devuelve un int que es la fecha en segundos de ese dia. Luego restas mktime a time().
1
2
$f1=mktime(0,0,0,5,12,1930);
$edad_s=time()-$f1;
Esa será en segundos la edad. Despreciamos horas, min y seg por que no tenemos suficiente información útil. Así que para sacar los años cogemos la variable (en mi caso $edad_s) y la dividimos entre (60*60*24*365), que son las operaciones para pasar de seg a min, de min, a horas, de horas a días y de días a años.
De el resultado tendremos dos partes... la parte entera que serán los años y la parte decimal que contendrá el resto de información a excepción de los años.
1
2
3
4
5
6
7
$edad_a=$edad_s/(60*60*24*365);
$edad_m=($edad_a-(int)$edad_a)*12; //Multiplicamos la parte decimal de los años por 12 para obtener los meses.
$edad_d=($edad_m-(int)$edad_m)*24;//Multiplicamos la parte decimal de los meses por 24 para sacar los días.
//Luego debemos coger únicamente la parte entera de cada numero;
$edad_a=(int)$edad_a; //Años
$edad_m=(int)$edad_m; //Meses
$edad_d=(int)$edad_d; //Dias

Si solo necesitas la edad en años entonces solo necesitas hacer:
1
$edad=(int)($edad_s/(60*60*24*365));

Y listo ya tienes lo que necesitas!
Un saludo.
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