Esta clase en PHP determina la edad de una persona en años, meses y días teniendo en cuenta años bisiestos. La lógica pasa por hacer una diferencia directa entre la fecha actual y la fecha de nacimiento y realizar un ajuste en caso de que los valores de los meses y/o días den negativo.
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | <?php /* Programa: Determinar la edad de una persona en años, meses y dias Version: 0.1 Fecha: 30 May 2010 Autor: Luis Chavez Mail: lchavez@larepaweb.com.ar Web: www.larepaweb.com.ar Pastebin: http://www.pastebin.org/296286 */ class edadAMD{ private $fActual; private $fNacimiento; function __construct($fActual, $fNacimiento){ $this->fActual = $fActual; $this->fNacimiento = $fNacimiento; } private function bisiesto($anio){ return checkdate(2,29,$anio) ? true : false; } private function validar(){ //validar el formato y que la fecha de nacimiento sea menor que la actual if(!isset($this->fActual)||!isset($this->fNacimiento)){ echo 'No se definieron las fechas'; return false; } return true; } function calcularEdad(){ if(!$this->validar()){ return false; } $anacimiento = explode ( "/", $this->fNacimiento); $aactual = explode ( "/", $this->fActual); $anios = $aactual[2] - $anacimiento[2]; $meses = $aactual[1] - $anacimiento[1]; $dias = $aactual[0] - $anacimiento[0]; if ($meses < 0){ --$anios; $meses = ($aactual[1] + 12) - $anacimiento[1]; } if ($dias < 0){ --$meses; //array con la cantidad de dias por mes $ameses = array(1=>31, 2=>28, 3=>31, 4=>30, 5=>31, 6=>30, 7=>31, 8=>31, 9=>30, 10=>31, 11=>30, 12=>31); $mAnterior = $aactual[1] - 1; if($mAnterior>0 && $mAnterior<>2){ $dmAnterior = $ameses[$mAnterior]; } elseif($mAnterior == 2){ //si el mes es febrero controlar si el año es bisiesto ($this->bisiesto($aactual[2])) ? $dmAnterior = 29 : $dmAnterior = $ameses['2']; } else{ //para el caso de que 01 (enero)-1 sea igual a 0 correspondería a diciembre del año anterior $dmAnterior = $ameses['12']; } $dias = ($aactual[0] + $dmAnterior) - $anacimiento[0]; } $edad[0] = $anios; $edad[1] = $meses; $edad[2] = $dias; return $edad; } } ?> |
Podemos hacer uso de la misma, de la siguiente manera:
1 2 3 4 5 6 7 8 9 10 | <?php //$fActual = date('d/m/Y'); $fActual = '30/05/2010'; $fNacimiento = '20/10/2000'; $edad = new edadAMD($fActual,$fNacimiento); $tiempo = $edad->calcularEdad(); echo "Fecha Actual: $fActual Fecha de Nacimiento: $fNacimiento Usted tiene $tiempo[0] años, $tiempo[1] meses y $tiempo[2] dias"; ?> |
La url en pastebin.org es: http://www.pastebin.org/296286
Fuente | LaREPAWEB


Información Bitacoras.com…
Valora en Bitacoras.com: Esta clase en PHP determina la edad de una persona en años, meses y días teniendo en cuenta años bisiestos. La lógica pasa por hacer una diferencia directa entre la fecha actual y la fecha de nacimiento y realizar un ajuste e…..