Ver Mensaje Individual
  #7 (permalink)  
Antiguo 07/04/2007, 07:59
makeitslow
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 4 meses
Puntos: 2
Re: Edad exacta con php

Estuve viendo por ahi, y encontrer 2 funcion y una operacion para calcular la edad, una es en JavaScript:
Código:
//calcular la edad de una persona 
//recibe la fecha como un string en formato español 
//devuelve un entero con la edad. Devuelve false en caso de que la fecha sea incorrecta o mayor que el dia actual 
function calcular_edad(fecha){ 

    //calculo la fecha de hoy 
    hoy=new Date() 
    //alert(hoy) 

    //calculo la fecha que recibo 
    //La descompongo en un array 
    var array_fecha = fecha.split("/") 
    //si el array no tiene tres partes, la fecha es incorrecta 
    if (array_fecha.length!=3) 
       return false 

    //compruebo que los ano, mes, dia son correctos 
    var ano 
    ano = parseInt(array_fecha[2]); 
    if (isNaN(ano)) 
       return false 

    var mes 
    mes = parseInt(array_fecha[1]); 
    if (isNaN(mes)) 
       return false 

    var dia 
    dia = parseInt(array_fecha[0]); 
    if (isNaN(dia)) 
       return false 


    //si el año de la fecha que recibo solo tiene 2 cifras hay que cambiarlo a 4 
    if (ano<=99) 
       ano +=1900 

    //resto los años de las dos fechas 
    edad=hoy.getYear()- ano - 1; //-1 porque no se si ha cumplido años ya este año 

    //si resto los meses y me da menor que 0 entonces no ha cumplido años. Si da mayor si ha cumplido 
    if (hoy.getMonth() + 1 - mes < 0) //+ 1 porque los meses empiezan en 0 
       return edad 
    if (hoy.getMonth() + 1 - mes > 0) 
       return edad+1 

    //entonces es que eran iguales. miro los dias 
    //si resto los dias y me da menor que 0 entonces no ha cumplido años. Si da mayor o igual si ha cumplido 
    if (hoy.getUTCDate() - dia >= 0) 
       return edad + 1 

    return edad 
}
y otra en PHP:

Código PHP:
<?php

// Calcula la edad (formato: año/mes/dia)
function edad($edad){
list(
$anio,$mes,$dia) = explode("-",$edad);
$anio_dif date("Y") - $anio;
$mes_dif date("m") - $mes;
$dia_dif date("d") - $dia;
if (
$dia_dif || $mes_dif 0)
$anio_dif--;
return 
$anio_dif;
}

?>
La edad es <?=edad("1992-03-06");?>
Y la operacion:

Código PHP:
$fecha1 explode("-","1980-01-01"); // fecha nacimiento 
$fecha2 explode("-",date("Y-m-d")); // fecha actual 

$Edad $fecha2[0]-$fecha1[0]; 
if(
$fecha2[1]<=$fecha1[1] and $fecha2[2]<=$fecha1[2]){ 
$Edad $Edad 1

print 
$Edad// debe tener 27 
Ambas son correctas, pero no se como usarlas para hacer el calculo inmediato con eventos de click del mouse, bueno eso se me ocurre para calcular la edad en la misma pagina sin cargar nada solo haciendo click en el textfield siguiente que es el de edad. Pense hacerlo con el onClick del textfield, pero creo que solo puede recibir metodos de JS sin variables, pense tambien poner el proceso en el value, pero para ello definitivamente tengo que hacer un evento adicional para que realice el calculo....

Bueno, no se me ocurre otra cosa... trate con lo mas simple, definir variables hidden y luego hacer el simple calculo de fechas en el textfield, pero tampoco.

Alguien sabe?? Como podria pasarle el valor de una variable a una funcion de JS???

Última edición por makeitslow; 15/04/2007 a las 20:20