Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Calculo edad actuarial en PHP

Estas en el tema de Calculo edad actuarial en PHP en el foro de PHP en Foros del Web. Hola, estoy programando una aplicación web en php para la contratación de un seguro y el cálculo de edad lo hago asi: [-- --] function ...
  #1 (permalink)  
Antiguo 17/03/2015, 06:49
 
Fecha de Ingreso: marzo-2015
Mensajes: 9
Antigüedad: 9 años, 1 mes
Puntos: 2
Pregunta Calculo edad actuarial en PHP

Hola, estoy programando una aplicación web en php para la contratación de un seguro y el cálculo de edad lo hago asi:
[-- --]
function CalculaEdad( $fecha ) {
list($Y,$m,$d) = explode("-",$fecha);
return( date("md") < $m.$d ? date("Y")-$Y-1 : date("Y")-$Y );
}
[-- --]
Eso funciona perfectamente y me devuelve la edad real actual, ahora viene mi problema, me han pedido que en vez de calcular la edad actual real de la persona, he de calcular la edad actuarial.

Explicación:
El calculo de la edad actuarial es que cuando tu tienes 30 años, 6 meses y 1 día, para el seguro, tienes 31.

Ejemplo:
Fecha actual: 01-09-2015
Fecha de nacimiento:01-02-2000

Esta persona a día 01-09-2015, tendía 15 años, pero como hace mas de 6 meses y 1 día que los cumplió, el seguro contempla la edad como 26 años.

PREGUNTA:
Alguien podría ayudarme para hacer una función como la que tengo, pero que me devuelva la edad actuarial ???????????????
Le estoy dando vueltas y no lo saco...

Última edición por melapillouncamion; 17/03/2015 a las 07:10
  #2 (permalink)  
Antiguo 17/03/2015, 08:15
 
Fecha de Ingreso: marzo-2015
Ubicación: Peru
Mensajes: 34
Antigüedad: 9 años, 1 mes
Puntos: 6
Respuesta: Calculo edad actuarial en PHP

amigo prueba esto y haber si te sirve:

$fecha="2000-09-01 00:00:00";
$fechaactual = strtotime('now');
$segundos=$fechaactual - strtotime($fecha);
$diferencia_dias=intval($segundos/60/60/24);
echo $diferencia_dias/365 .'<br/>'; // aca imprimir la fecha con decimales
echo round($diferencia_dias/365); //aca le redondeo al numero mayor inmediato
  #3 (permalink)  
Antiguo 17/03/2015, 14:18
 
Fecha de Ingreso: marzo-2015
Mensajes: 9
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Calculo edad actuarial en PHP

Gracias, pero lo que necesito es saber la edad exacta y si hace mas de 6 meses y 1 día que esa persona cumplió años.
Con la función que pones, no se controlan los años bisiestos...
  #4 (permalink)  
Antiguo 17/03/2015, 14:41
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Calculo edad actuarial en PHP

Pues corrige lo de los años bisiestos y estas listo.
Vamos que no puede sen tan complicado
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 17/03/2015, 15:49
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: Calculo edad actuarial en PHP

creo que te estas complicando mas de lo necesario..
si ya tienes el script que te saca los años, meses y dias lo unico que tiene que hacer, es comparar las edades y si meses es mayor de 6 y dias mayor de 1 entonces a edad le sumas uno y listo...

no?
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #6 (permalink)  
Antiguo 19/03/2015, 03:21
 
Fecha de Ingreso: marzo-2015
Mensajes: 9
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Calculo edad actuarial en PHP

solucionado:

Tenemos que pasarle la fecha de nacimiento en formato de texto, para que nos conserve el 0 delante del número del mes, por ejemplo 2015-03-01 si estos datos los pasamos como número al acumularlos individualmente, nos elimina el cero pero si los pasamos como letra, nos conserva el "01" y el "03" de forma que al concatenarlos en la función quedaria "0301", si no nos quedaría "31"

Código PHP:
Ver original
  1. //CALCULA LA EDAD ACTUARIAL.
  2. function CalculaEdad( $fecha ) {
  3.         list($Y,$m,$d) = explode("-",$fecha);
  4.         $ma=date("m");
  5.         if($ma>$m) {
  6.             $temp=($ma)-$m;//."meses *opcion1*";
  7.             if($temp>6){
  8.                 //echo "<br/>año mas uno<br/>";
  9.                 $mesresta=1;
  10.             }
  11.         }
  12.         if($ma<$m) {
  13.             $temp=(12-$m)+$ma;//."meses *opcion2*";
  14.             if($temp>=6){
  15.                 //echo "<br/>año mas uno<br/>";
  16.                 $mesresta=1;
  17.             }
  18.         }
  19.         if($ma==$m) {
  20.             if($d>date("d")){
  21.                 //echo "<br/>año mas uno por dias<br/>";
  22.                 $mesresta=1;
  23.             }
  24.             //echo "<br/>no se suma porque ya los ha cumplido este mes<br/>";
  25.         }
  26.         if(($ma.date("d")) < ($m.$d)){
  27.             $Anoactuales= date("Y")-$Y-1;
  28.         }else{
  29.             $Anoactuales= date("Y")-$Y;
  30.         }
  31.         return($Anoactuales+$mesresta);
  32.     }

Calcula la edad exacta, con un margen de error de menos de 24 horas y calcula si hace mas de 6 meses que cumpliste los años, te pone 1 año mas. (es lo que requieren las contrataciones de seguros.)

Etiquetas: calculo, edad, fecha
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.
Respuesta




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