Foros del Web » Programando para Internet » PHP »

como puedo sacar la edad exacta basado en un registro??

Estas en el tema de como puedo sacar la edad exacta basado en un registro?? en el foro de PHP en Foros del Web. Buenas!!! Explico: Resulta que tengo una base de datos que almacena la fecha de nacimiento pero con el formato "XX de XXXXXXXXXXXX de XXXX" osea ...
  #1 (permalink)  
Antiguo 30/10/2009, 22:29
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Pregunta como puedo sacar la edad exacta basado en un registro??

Buenas!!!

Explico:

Resulta que tengo una base de datos que almacena la fecha de nacimiento pero con el formato "XX de XXXXXXXXXXXX de XXXX" osea "12 de octubre de 1999"
ahora ...

necesito poder separar esa fecha almacenada para sacar la edad exacta

mi idea es ir comparando año, mes y dia para sacar la edad exacta

pero no se como descomponer lo ya almacenado.... :s

alguien que me ayude o me oriente???

de antemano muchas gracias!!

un saludo!!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #2 (permalink)  
Antiguo 30/10/2009, 22:57
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: como puedo sacar la edad exacta basado en un registro??

¿Lo almacenas como date o como string?
  #3 (permalink)  
Antiguo 30/10/2009, 23:09
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: como puedo sacar la edad exacta basado en un registro??

buenas!!

como string
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #4 (permalink)  
Antiguo 30/10/2009, 23:19
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: como puedo sacar la edad exacta basado en un registro??

¿Siempre tienen el mismo formato ("xx de xxxxxx de xxxx")?
  #5 (permalink)  
Antiguo 30/10/2009, 23:24
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: como puedo sacar la edad exacta basado en un registro??

buenas...
si porque la fecha es "armada" mediante Select's

en donde el usuario selecciona dia, mes y año

asi que el formato siempre es:

21 de octubre de 1998, 7 de septiembre de 1999, 1 de enero de 2001, etc...

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #6 (permalink)  
Antiguo 30/10/2009, 23:53
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: como puedo sacar la edad exacta basado en un registro??

buenas...

una disculpa duplique la respuesta
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #7 (permalink)  
Antiguo 30/10/2009, 23:57
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: como puedo sacar la edad exacta basado en un registro??

Mira, aún así me parece mucho más práctico guardar las fechas como fechas... pero bueno, lo que tienes que hacer primero es convertir ese string en una fecha equivalente:
Código PHP:
$arrMeses=array('''enero''febrero''marzo''abril''mayo''junio''julio''agosto''septiembre''octubre''noviembre''diciembre');
$arrMesesInvertido=array_flip($arrMeses);
$partesFecha=explode(' de '$fechaOriginal);
$fecha=str_to_date($partesFecha[2].'-'.$arrMesesInvertido[$partesFecha[1]].'-'.$partesFecha[0]); 
Luego tienes que restárselo al epoch actual:
Código PHP:
$tiempo=time()-$fecha
Creo que después podrías ya obtener la edad de la persona en cuestión:
Código PHP:
$anios=date("Y"$tiempo)-1970;
$meses=date("m"$tiempo);
$dias=date("d"$tiempo); 
Lo que no sé es cómo maneja PHP las fechas anteriores a 1970 . ¿Alguien sabe? Quizás te traiga problemas ahí este método. ¡Suerte!
  #8 (permalink)  
Antiguo 30/10/2009, 23:58
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 4 meses
Puntos: 30
Respuesta: como puedo sacar la edad exacta basado en un registro??

puedes dividir la variable por ejemplo

tomar las ultimas 4 carcteres numero
tomar los caracteres texto y quitar de cuando esta solo
tomar los primeros 2 caradteres numero
y despues hacer esto con la fecha actual y restar
el dia en 30, el mes en 12 y el año no hace falta solo es una comparacion actual y pasado
__________________
...
  #9 (permalink)  
Antiguo 31/10/2009, 02:23
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Pregunta Respuesta: como puedo sacar la edad exacta basado en un registro??

Buenas!!

despues de mucho buscarle y gracias a sus orientaciones al Final quedo asi

Código PHP:
<?
$fechaOriginal
="3 de Octubre de 1990";

$partesFecha=explode(' de '$fechaOriginal);
$anios=date("Y");$meses=date("m");$dias=date("d");
switch(
$partesFecha[1]){
case 
"Enero"$mes "01"; break;
case 
"Enero"$mes "02"; break;
case 
"Marzo"$mes "03"; break;
case 
"Abril"$mes "04"; break;
case 
"Mayo"$mes "05"; break;
case 
"Junio"$mes "06"; break;
case 
"Julio"$mes "07"; break;
case 
"Agosto"$mes "08"; break;
case 
"Septiembre"$mes "09"; break;
case 
"Octubre"$mes "10"; break;
case 
"Noviembre"$mes "11"; break;
case 
"Diciembre"$mes "12"; break;
}
$reanio $anios $partesFecha[2];
if (
$partesFecha[0] <= $dias and $mes <= $meses) {$reanio $reanio 1; }
if (
$partesFecha[0] >= $dias and $mes $meses) {$reanio $reanio 1; }
echo 
"<br><br>Años que se tiene Actualmente : ".$reanio;
?>
me funciona perfectamente

ahora solo me queda una duda

para convertirla en funcion
¿que tengo que hacer exactamente??
porque eh puesto
Código PHP:
function Conectarse() {
// contenido
}
return 
$reanio
y no me responde y hasta donde llegan mis conocimientos asi deveria funcionar

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #10 (permalink)  
Antiguo 31/10/2009, 10:13
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: como puedo sacar la edad exacta basado en un registro??

Debes aprender un poco más sobre la programación en general (al menos la imperativa). Te recomiendo que leas un manual. De todos modos te cuento:
  1. Yo le pondría a la función un nombre más intuitivo, como "obtenerEdad".
  2. Tendría que pasarle como parámetro el string que contiene la fecha de nacimiento (a menos que sea una variable global).
  3. El cuerpo de la función se delimita con las llaves ({ y }), por lo tanto los valores de retorno se devuelven entre las llaves.

Código PHP:
function obtenerEdad($fechaOriginal)
{
    
$partesFecha=explode(' de '$fechaOriginal);
    
$anios=date("Y");$meses=date("m");$dias=date("d");
    switch(
$partesFecha[1]){
        case 
"Enero"$mes "01"; break;
        case 
"Enero"$mes "02"; break;
        case 
"Marzo"$mes "03"; break;
        case 
"Abril"$mes "04"; break;
        case 
"Mayo"$mes "05"; break;
        case 
"Junio"$mes "06"; break;
        case 
"Julio"$mes "07"; break;
        case 
"Agosto"$mes "08"; break;
        case 
"Septiembre"$mes "09"; break;
        case 
"Octubre"$mes "10"; break;
        case 
"Noviembre"$mes "11"; break;
        case 
"Diciembre"$mes "12"; break;
    }
    
$reanio $anios $partesFecha[2];
    if (
$partesFecha[0] <= $dias and $mes <= $meses) {$reanio $reanio 1; }
    if (
$partesFecha[0] >= $dias and $mes $meses) {$reanio $reanio 1; }
    return 
$reanio;

¡Suerte!
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 13:09.