Foros del Web » Programando para Internet » PHP »

como hacer para calcular la edad con la fecha del sistema

Estas en el tema de como hacer para calcular la edad con la fecha del sistema en el foro de PHP en Foros del Web. como hago para obtener la edad de alguien con su fecha de nacimiento y la actual del sistema se que tengo que hacer una resta ...
  #1 (permalink)  
Antiguo 19/08/2008, 13:29
 
Fecha de Ingreso: agosto-2008
Mensajes: 26
Antigüedad: 15 años, 8 meses
Puntos: 0
como hacer para calcular la edad con la fecha del sistema

como hago para obtener la edad de alguien con su fecha de nacimiento y la actual del sistema se que tengo que hacer una resta lo que pasa es que no me la muestra la fecha que seleccion que puedo hacer?????????
 Fecha De Nacimiento:
<select name="dia1">
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
</select>
Mes:
<select name="mes1">
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
A&ntilde;o:
<select name="a&ntilde;o">
<option>1920</option>
<option>1921</option>
<option>1922</option>
<option>1923</option>
<option>1924</option>
<option>1925</option>
<option>1926</option>
<option>1927</option>
<option>1928</option>
<option>1930</option>
<option>1931</option>
<option>1932</option>
<option>1933</option>
<option>1934</option>
<option>1935</option>
<option>1936</option>
<option>1937</option>
<option>1938</option>
<option>1940</option>
<option>1941</option>
<option>1942</option>
<option>1943</option>
<option>1944</option>
<option>1945</option>
<option>1946</option>
<option>1947</option>
<option>1948</option>
<option>1949</option>
<option>1950</option>
<option>1951</option>
<option>1952</option>
<option>1953</option>
<option>1954</option>
<option>1955</option>
<option>1956</option>
<option>1957</option>
<option>1958</option>
<option>1959</option>
<option>1960</option>
<option>1961</option>
<option>1962</option>
<option>1963</option>
<option>1964</option>
<option>1965</option>
<option>1966</option>
<option>1967</option>
<option>1968</option>
<option>1969</option>
<option>1970</option>
<option>1971</option>
<option>1972</option>
<option>1973</option>
<option>1974</option>
<option>1975</option>
<option>1976</option>
<option>1977</option>
<option>1978</option>
<option>1979</option>
<option>1980</option>
<option>1981</option>
<option>1982</option>
<option>1983</option>
<option>1984</option>
<option>1985</option>
<option>1986</option>
<option>1987</option>
<option>1988</option>
<option>1989</option>
<option>1990</option>
<option>1991</option>
<option>1992</option>
<option>1993</option>
<option>1994</option>
<option>1995</option>
<option>1996</option>
<option>1997</option>
<option>1998</option>
<option>1999</option>
<option>2000</option>
<option>2001</option>
<option>2002</option>
<option>2003</option>
<option>2004</option>
<option>2005</option>
<option>2006</option>
<option>2007</option>
<option>2008</option>
<option>2009</option>
<option>2010</option>
<option>2011</option>
<option>2012</option>
<option>2013</option>
<option>2014</option>
<option>2015</option>
<option>2016</option>
<option>2017</option>
<option>2018</option>
<option>2019</option>
<option>2020</option>
<option>2021</option>
<option>2022</option>
<option>2023</option>
<option>2024</option>
<option>2025</option>
<option>2026</option>
<option>2027</option>
<option>2028</option>
<option>2029</option>
<option>2030</option>
<option>2031</option>
<option>2032</option>
<option>2033</option>
<option>2034</option>
<option>2035</option>
<option>2036</option>
<option>2037</option>
<option>2038</option>
<option>2039</option>
<option>2040</option>
<option>2041</option>
<option>2042</option>
<option>2043</option>
<option>2044</option>
<option>2045</option>
<option>2046</option>
<option>2047</option>
<option>2048</option>
<option>2049</option>
<option>2050</option>
</select>
</span></strong></em></p>
  #2 (permalink)  
Antiguo 19/08/2008, 13:32
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: como hacer para calcular la edad con la fecha del sistema

Solo obten el campo FECHA de la base de datos
Conviertela a su UNIX TIMESTAMP con strtotime
Dividelo entre: (60*60*24*365)
Y haz un floor para que redondee la edad hacia abajo.
  #3 (permalink)  
Antiguo 19/08/2008, 13:41
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: como hacer para calcular la edad con la fecha del sistema

En ningun sitio dice que obtiene la fecha de una bbdd :)

Por lo que dices, no te pasa bien los datos desde el formulario, es posible que el fallo sea por el name del Año, que lo tienes con ñ, ponlo con n, aunque suene mal, o si quieres, ponle year, igual por esa tonteria no te acepta la variable con ñ
  #4 (permalink)  
Antiguo 19/08/2008, 13:45
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
De acuerdo Respuesta: como hacer para calcular la edad con la fecha del sistema

Código PHP:
<?php
 
if (!function_exists("edad")) {
function 
edad($fechanac){
 
//fecha actual
$dia=date(j);
$mes=date(n);
$ano=date(Y); 
 
//fecha de nacimiento
$dianaz=date("j"strtotime($fechanac));
$mesnaz=date("n"strtotime($fechanac));
$anonaz=date("Y"strtotime($fechanac));
//si el mes es el mismo pero el dia inferior aun no ha cumplido años, le quitaremos un año al actual
if (($mesnaz == $mes) && ($dianaz $dia)) {
$ano=($ano-1); }
//si el mes es superior al actual tampoco habra cumplido años, por eso le quitamos un año al actual
if ($mesnaz $mes) {
$ano=($ano-1);}
//ya no habria mas condiciones, ahora simplemente restamos los años y mostramos el resultado como su edad
$edad=($ano-$anonaz);
return 
$edad;

}
}
?>

ejemplo de como usar la funcion:

Código PHP:

<?php
$fechanac
="1980-10-06";
echo 
edad($fechanac);
 
?>
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)

Última edición por farra; 19/08/2008 a las 13:54
  #5 (permalink)  
Antiguo 19/08/2008, 13:48
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: como hacer para calcular la edad con la fecha del sistema

Una recomendacion:

Coloquele value a los option que eso es lo que se recibe realmente y para que se le facilite y no le quede tanto codigo genere la lista con un for php:

algo asi como

Código PHP:
<select name='anonacimiento'>
<?
for ($i=1910;$i<=2008;$i++)
{
echo 
"<option value='$i'>$i</option>";
}
?>
</select>

Lo de la edad parece que ya le solucionaron la duda, si algo no dude en preguntaron
  #6 (permalink)  
Antiguo 19/08/2008, 13:52
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: como hacer para calcular la edad con la fecha del sistema

tambien podes hacerlo con javascript:

Código HTML:
<script>
//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 
} 
</script> 
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #7 (permalink)  
Antiguo 19/08/2008, 14:14
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: como hacer para calcular la edad con la fecha del sistema

aca tenes uno todo hecho, que crea el formulario, luego calcula la edad de acuerdo a la fecha y tambien valida que la fecha sea valida, por que a veces te ponen 30 de febrero por ejemplo...



edad.php :


Código PHP:
<?php  
 
if (!function_exists("edad")) { 
function 
edad($fechanac){ 
 
//fecha actual 
$dia=date(j); 
$mes=date(n); 
$ano=date(Y);  
  
//fecha de nacimiento 
$dianaz=date("j"strtotime($fechanac)); 
$mesnaz=date("n"strtotime($fechanac)); 
$anonaz=date("Y"strtotime($fechanac)); 
//si el mes es el mismo pero el dia inferior aun no ha cumplido años, le quitaremos un año al actual 
if (($mesnaz == $mes) && ($dianaz $dia)) { 
$ano=($ano-1); } 
//si el mes es superior al actual tampoco habra cumplido años, por eso le quitamos un año al actual 
if ($mesnaz $mes) { 
$ano=($ano-1);} 
//ya no habria mas condiciones, ahora simplemente restamos los años y mostramos el resultado como su edad 
$edad=($ano-$anonaz); 
return 
$edad




// valida fecha  
$Diar=$_POST['dia'];
$Mesr=$_POST['mes'];
$Anhor=$_POST['ano'];
if((
$_POST['dia'] != "") && ($_POST['mes'] != "") &&  ($_POST['ano'] != "")){
    if (
checkdate($Mesr$Diar$Anhor)) {
    
$fechaValida='si';
    } else {
    
$fechaValida='no';
    }
}
// valida fecha 

?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Edad</title>
</head>

<body>
<?php 
$fechanac
=$_POST['ano']."-".$_POST['mes']."-".$_POST['dia'];
$faltadato="si";
if((
$_POST['ano'] != "") && ($_POST['mes'] != "") && ($_POST['dia'] != "")) {
$faltadato="no";
}
if((
$_POST['ano'] != "") && ($_POST['mes'] != "") && ($_POST['dia'] != "") && ($fechaValida == "si")){ ?> 
Tu edad es: <?php echo edad($fechanac); ?> A&ntilde;os
<?php  ?>
<?php 
if (($_POST['MM_send'] == "form1") && ($faltadato == "si") && ($fechaValida != "si")){ ?>
*Debe completar todos los campos<br />
<?php ?>
<?php 
if (($_POST['MM_send'] == "form1") && ($fechaValida != "si") && ($faltadato == "no")){ ?>
*La fecha de nacimiento que escribiste no es valida<br />
<?php ?>
<form id="form1" name="form1" method="post" action="edad.php">
<table> <tr valign="baseline">
                    <td nowrap align="right">Fecha de Nacimiento:</td>
                    <td colspan="2" align="left"><select name="dia">
                        <option value="">dia</option>
                      <?php $Dias="1" ?>
                      <?php while($Dias <= "31"){ ?>
                      <option <?php if($Dias == $_POST['dia']){  ?>selected="selected"<?php }?> value="<?php echo $Dias?>"><?php echo $Dias?></option>
                      <?php $Dias=$Dias+1 ?>
                      <?php ?>
                      </select>
                      <select name="mes">
                      <option value="">mes</option>
                        <option value="1" <?php if ($_POST['mes'] == "1"){  ?> selected="selected"<?php ?> >Enero</option>
                        <option value="2" <?php if ($_POST['mes'] == "2"){  ?> selected="selected"<?php ?> >Febrero</option>
                        <option value="3" <?php if ($_POST['mes'] == "3"){  ?> selected="selected"<?php ?> >Marzo</option>
                        <option value="4" <?php if ($_POST['mes'] == "4"){  ?> selected="selected"<?php ?> >Abril</option>
                        <option value="5" <?php if ($_POST['mes'] == "5"){  ?> selected="selected"<?php ?> >Mayo</option>
                        <option value="6" <?php if ($_POST['mes'] == "6"){  ?> selected="selected"<?php ?> >Junio</option>
                        <option value="7" <?php if ($_POST['mes'] == "7"){  ?> selected="selected"<?php ?> >Julio</option>
                        <option value="8" <?php if ($_POST['mes'] == "8"){  ?> selected="selected"<?php ?> >Agosto</option>
                        <option value="9" <?php if ($_POST['mes'] == "9"){  ?> selected="selected"<?php ?> >Septiembre</option>
                        <option value="10" <?php if ($_POST['mes'] == "10"){  ?> selected="selected"<?php ?> >Octubre</option>
                        <option value="11" <?php if ($_POST['mes'] == "11"){  ?> selected="selected"<?php ?> >Noviembre</option>
                        <option value="12" <?php if ($_POST['mes'] == "12"){  ?> selected="selected"<?php ?> >Diciembre</option>
                      </select>
                      <select name="ano">
                        <option value="">ano</option>
<?php 
$hoyano
=date("Y");
//$hoydateyear=$hoyano-18;
$hoydateyear=$hoyano-1;
$dateyear=$hoydateyear-100;
?>
                      <?php while($dateyear <= $hoydateyear){ ?>
                      <option <?php if ($dateyear == $_POST['ano']) {?>selected="selected" <?php }?> value="<?php echo $dateyear?>"><?php echo $dateyear?></option>
                      <?php $dateyear=$dateyear+1 ?>
                      <?php ?>
                      </select></td>
                  </tr></table>

  <input type="submit" name="button" id="button" value="Calcular Edad" />
  <input type="hidden" name="MM_send" id="MM_send" value="form1" />
</form>
<p>&nbsp;</p>
</body>
</html>
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #8 (permalink)  
Antiguo 19/08/2008, 15:22
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: como hacer para calcular la edad con la fecha del sistema

Cita:
Iniciado por farra Ver Mensaje
Código PHP:
<?php
 
if (!function_exists("edad")) {
function 
edad($fechanac){
 
//fecha actual
$dia=date(j);
$mes=date(n);
$ano=date(Y); 
 
//fecha de nacimiento
$dianaz=date("j"strtotime($fechanac));
$mesnaz=date("n"strtotime($fechanac));
$anonaz=date("Y"strtotime($fechanac));
//si el mes es el mismo pero el dia inferior aun no ha cumplido años, le quitaremos un año al actual
if (($mesnaz == $mes) && ($dianaz $dia)) {
$ano=($ano-1); }
//si el mes es superior al actual tampoco habra cumplido años, por eso le quitamos un año al actual
if ($mesnaz $mes) {
$ano=($ano-1);}
//ya no habria mas condiciones, ahora simplemente restamos los años y mostramos el resultado como su edad
$edad=($ano-$anonaz);
return 
$edad;

}
}
?>

ejemplo de como usar la funcion:

Código PHP:

<?php
$fechanac
="1980-10-06";
echo 
edad($fechanac);
 
?>
Que no es mas facil asi:

Código PHP:
function edad($fecha) {
    
$tiempo strtotime($fecha);
    
$ahora time();
    
$edad = ($ahora-$tiempo)/(60*60*24*365);
    
$edad floor($edad);
    return 
$edad;

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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:43.