Foros del Web » Programando para Internet » Javascript »

Calcular la edad de una persona

Estas en el tema de Calcular la edad de una persona en el foro de Javascript en Foros del Web. Hola, si en un form tengo 3 campos: día mes y año de nacimiento quiero que me aparezca en otro campo la edad que tiene ...
  #1 (permalink)  
Antiguo 26/11/2004, 13:16
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Calcular la edad de una persona

Hola, si en un form tengo 3 campos: día mes y año de nacimiento quiero que me aparezca en otro campo la edad que tiene es sujeto...

Alguien tiene el script ya hecho ?
o me pueden guiar... ?

Saludos
__________________
Esteban Quintana
  #2 (permalink)  
Antiguo 26/11/2004, 15:04
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 19 años, 5 meses
Puntos: 0
Hola creo poder ayudarte a tu problema aqui te va un ejemplo:

<SCRIPT>

function generarfechacompleta()
{
document.registro.fecha_completa.value = document.registro.dia.value + "/" + document.registro.mes.value + "/" + document.registro.ano.value;
return true;
}

function fecha( cadena ) {

//Separador para la introduccion de las fechas
var separador = "/"

//Separa por dia, mes y año
if ( cadena.indexOf( separador ) != -1 ) {
var posi1 = 0
var posi2 = cadena.indexOf( separador, posi1 + 1 )
var posi3 = cadena.indexOf( separador, posi2 + 1 )
this.dia = cadena.substring( posi1, posi2 )
this.mes = cadena.substring( posi2 + 1, posi3 )
this.anio = cadena.substring( posi3 + 1, cadena.length )
} else {
this.dia = 0
this.mes = 0
this.anio = 0
}
}


function comprobaciones()
{
//xyz = generarfechacompleta();
document.registro.fecha_completa.value = document.registro.dia.value + "/" + document.registro.mes.value + "/" + document.registro.ano.value;

errorfecha=0
// OBTENGO LA FECHA DEL SISTEMA

var fecha_actual = new Date()
var fecha_sistema;

dia = fecha_actual.getDate()
mes = fecha_actual.getMonth() + 1
anio = fecha_actual.getYear()

if (anio < 100)
anio = '19' + anio
else if ( ( anio > 100 ) && ( anio < 999 ) ) {
var cadena_anio = new String(anio)
anio = '20' + cadena_anio.substring(1,3)
}

if (mes < 10)
mes = '0' + mes

if (dia < 10)
dia = '0' + dia

fecha_sistema=dia + "/" + mes + "/" + anio;


// DIFERENCIA DE FECHAS

CadenaFecha1 = fecha_sistema
CadenaFecha2 = document.registro.fecha_completa.value

//Obtiene dia, mes y año
var fecha1 = new fecha( CadenaFecha1 )
var fecha2 = new fecha( CadenaFecha2 )

//Obtiene objetos Date
var miFecha1 = new Date( fecha1.anio, fecha1.mes, fecha1.dia )
var miFecha2 = new Date( fecha2.anio, fecha2.mes, fecha2.dia )

//Resta fechas y redondea
var diferencia = miFecha1.getTime() - miFecha2.getTime()
var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24))
var segundos = Math.floor(diferencia / 1000)
// alert ('La diferencia es de ' + dias + ' dias,\no ' + segundos + ' segundos.')


var info="Has introducido mal los siguientes campos:\n\n";
var aviso="";
************************************************** **********
if (document.registro.dia.value=="" | document.registro.mes.value=="" | document.registro.ano.value=="" | document.registro.fecha_completa.value=="")
{
/*alert ("Tiene que rellenar todos los campos de este formulario para poder registrarse.");
aviso="a"*/
info=info+"- NO PUEDES DEJAR NINGÚN CAMPO OBLIGATORIO EN BLANCO\n";
}

var fech=document.registro.fecha_completa.value;
var mes=fech.charAt(3)+fech.charAt(4);
//if(aviso=="")
if(document.registro.fecha_completa.value.length!= 10)
{
if (errorfecha!=1) {info=info+"- FECHA (El formato debe ser:
dd/mm/aaaa (10 dígitos))\n";errorfecha=1
}
switch(mes)
{
case "01": case "03": case "05": case "07": case"08": case"10":
case"12":
//if(aviso=="")
{
if(fech.charAt(0)=="3" && fech.charAt(1)!="0" && fech.charAt(1)!
="1")
{
if (errorfecha!=1) {info=info+"- FECHA (El día debe estar entre 1
y 31)\n";errorfecha=1
}
}
break;
}
case "04": case"06": case"09": case"11":
{
if(fech.charAt(0)=="3" && fech.charAt(1)!="0")
{
if (errorfecha!=1) {info=info+"- FECHA (El día debe estar
entre 1 y 31)\n";errorfecha=1
}
}
break;
}
default :
{
if( mes>12)
{
if (errorfecha!=1) {info=info+"- FECHA (El mes debe
estar entre 1 y 12)\n";errorfecha=1}
}
}
}

if(fech.charAt(2)!="/")
{
if (errorfecha!=1) {info=info+"- FECHA (El formato de fecha debe ser = dd/mm/aaaa)\n";errorfecha=1}
}
if(fech.charAt(5)!="/")
{
if (errorfecha!=1) {info=info+"- FECHA (El formato de fecha debe ser = dd/mm/aaaa)\n";errorfecha=1}
}

if(fech.charAt(0)!="0" && fech.charAt(0)!="1" && fech.charAt(0)!=2 && fech.charAt(0)!=3)
{
if (errorfecha!=1) {info=info+"- FECHA (El dia debe estar entre 1 y 31)\n";errorfecha=1}
}
if(fech.charAt(3)!="0" && fech.charAt(3)!="1")
{
if (errorfecha!=1) {info=info+"- FECHA (El mes debe estar entre 1 y 12)\n";errorfecha=1}
}
//aqui transformas dias para que te de la edad exacta.
if (dias<6575){if (errorfecha!=1) {info=info+"- FECHA (No eres mayor de 18 años)\n";errorfecha=1}}


CadenaFecha2 = document.registro.fecha_completa.value

fecha2 = new fecha( CadenaFecha2 )

if (fecha2.mes==02){
if((fecha2.anio % 4)== 0){
if (fecha2.dia>29){if (errorfecha!=1) {info=info+"- FECHA (Febrero no puede tener mas de 29 dias)\n";errorfecha=1}
}}}
if (fecha2.mes==02){
if((fecha2.anio % 4)!= 0){
if (fecha2.dia>28){if (errorfecha!=1) {info=info+"- FECHA (Febrero no puede tener mas de 28 dias)\n";errorfecha=1}
}}}
if (fecha2.mes==01){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Enero no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==03){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Marzo no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==04){
if (fecha2.dia>30){if (errorfecha!=1) {info=info+"- FECHA (Abril no puede tener mas de 30 dias)\n";errorfecha=1}
}}
if (fecha2.mes==05){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Mayo no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==06){
if (fecha2.dia>30){if (errorfecha!=1) {info=info+"- FECHA (Junio no puede tener mas de 30 dias)\n";errorfecha=1}
}}
if (fecha2.mes==07){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Julio no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==08){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Agosto no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==09){
if (fecha2.dia>30){if (errorfecha!=1) {info=info+"- FECHA (Septiembre no puede tener mas de 30 dias)\n";errorfecha=1}
}}
if (fecha2.mes==10){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Octubre no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==11){
if (fecha2.dia>30){if (errorfecha!=1) {info=info+"- FECHA (Noviembre no puede tener mas de 30 dias)\n";errorfecha=1}
}}
if (fecha2.mes==12){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Diciembre no puede tener mas de 31 dias)\n";errorfecha=1}
}}

</SCRIPT>
<INPUT id=fecha_completa type=hidden
name=fecha_completa>
<INPUT id=dia
style="border:1px solid #000080; "
tabIndex=8 maxLength=2 size=2 name=dia></font><font face="Eras Lt BT" size="2"> <B>/</B>
</font>
<font face="Verdana">
<font face="Eras Lt BT" size="1">
<INPUT id=mes
style="border:1px solid #000080; "
tabIndex=9 maxLength=2 size=2 name=mes></font><font face="Eras Lt BT" size="2"> <B>/</B>
</font><font face="Eras Lt BT" size="1">
<INPUT id=ano
style="border:1px solid #000080; "
tabIndex=10 maxLength=4 size=4 name=ano></font><font face="Eras Lt BT" size="2"> <!--onChange="generarfechacompleta()"-->
</font>
</font></TD></TR>
<TR vAlign=top>

<p align="center"><font face="Verdana">
<a href="javascript:comprobaciones()">
<IMG tabIndex=14 alt="Conviértete en usuario registrado"
src="image/Botones/siguiente_v3.gif"
border=0></a></font></TD>
</TABLE>

bueno el script esta bueno porque yo luo uso ademas tienes la parte del html para que te guies si necesitas algo solo vuelve a consultar.

espero que te sirva de ayuda.

Atte. Mohamed
Desde Venezuela - Isla de Margarita
  #3 (permalink)  
Antiguo 28/11/2004, 14:37
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 4 meses
Puntos: 4
lo probe y no me funciono, no m hace nada, me salio un error qeu podra ser?
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #4 (permalink)  
Antiguo 29/11/2004, 09:44
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 19 años, 5 meses
Puntos: 0
disculpenme habia cortado mal el codigo aqui les va el codigo completo
Código:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Pagina nueva 2</title>
</head>

<body>
<SCRIPT>

function generarfechacompleta()
{
document.registro.fecha_completa.value = document.registro.dia.value + "/" + document.registro.mes.value + "/" + document.registro.ano.value;
return true;
}

function fecha( cadena ) 
{

//Separador para la introduccion de las fechas
var separador = "/"

//Separa por dia, mes y año
if ( cadena.indexOf( separador ) != -1 ) 
{
var posi1 = 0
var posi2 = cadena.indexOf( separador, posi1 + 1 )
var posi3 = cadena.indexOf( separador, posi2 + 1 )
this.dia = cadena.substring( posi1, posi2 )
this.mes = cadena.substring( posi2 + 1, posi3 )
this.anio = cadena.substring( posi3 + 1, cadena.length )
} else 
  {
this.dia = 0
this.mes = 0
this.anio = 0 
   }
}


function comprobaciones()
{
//xyz = generarfechacompleta();
document.registro.fecha_completa.value = document.registro.dia.value + "/" + document.registro.mes.value + "/" + document.registro.ano.value;

errorfecha=0
// OBTENGO LA FECHA DEL SISTEMA

var fecha_actual = new Date()
var fecha_sistema;

dia = fecha_actual.getDate()
mes = fecha_actual.getMonth() + 1
anio = fecha_actual.getYear()

if (anio < 100)
anio = '19' + anio
else if ( ( anio > 100 ) && ( anio < 999 ) ) {
var cadena_anio = new String(anio)
anio = '20' + cadena_anio.substring(1,3)
}

if (mes < 10)
mes = '0' + mes

if (dia < 10)
dia = '0' + dia

fecha_sistema=dia + "/" + mes + "/" + anio;


// DIFERENCIA DE FECHAS

CadenaFecha1 = fecha_sistema
CadenaFecha2 = document.registro.fecha_completa.value

//Obtiene dia, mes y año
var fecha1 = new fecha( CadenaFecha1 ) 
var fecha2 = new fecha( CadenaFecha2 )

//Obtiene objetos Date
var miFecha1 = new Date( fecha1.anio, fecha1.mes, fecha1.dia )
var miFecha2 = new Date( fecha2.anio, fecha2.mes, fecha2.dia )

//Resta fechas y redondea
var diferencia = miFecha1.getTime() - miFecha2.getTime()
var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24))
var segundos = Math.floor(diferencia / 1000)
// alert ('La diferencia es de ' + dias + ' dias,\no ' + segundos + ' segundos.')


var info="Has introducido mal los siguientes campos:\n\n";
var aviso="";
//************************************************* ***********
if (document.registro.dia.value=="" | document.registro.mes.value=="" | document.registro.ano.value=="" | document.registro.fecha_completa.value=="")
{
/*alert ("Tiene que rellenar todos los campos de este formulario para poder registrarse.");
aviso="a"*/
info=info+"- NO PUEDES DEJAR NINGÚN CAMPO OBLIGATORIO EN BLANCO\n";
}

var fech=document.registro.fecha_completa.value;
var mes=fech.charAt(3)+fech.charAt(4);
//if(aviso=="")
if(document.registro.fecha_completa.value.length!=10)
{
if (errorfecha!=1) {info=info+"- FECHA (El formato debe ser: dd/mm/aaaa (10 dígitos))\n";errorfecha=1
}
switch(mes)
{
case "01": case "03": case "05": case "07": case"08": case"10": 
case"12":
//if(aviso=="")
{
if(fech.charAt(0)=="3" && fech.charAt(1)!="0" && fech.charAt(1)!="1")
{
if (errorfecha!=1) {info=info+"- FECHA (El día debe estar entre 1 y 31)\n";errorfecha=1
}
} 
break;
}
case "04": case"06": case"09": case"11":
{
if(fech.charAt(0)=="3" && fech.charAt(1)!="0")
{
if (errorfecha!=1) {info=info+"- FECHA (El día debe estar entre 1 y 31)\n";errorfecha=1
}
} 
break;
}
default : 
{
if( mes>12)
{
if (errorfecha!=1) {info=info+"- FECHA (El mes debe estar entre 1 y 12)\n";errorfecha=1}
} 
}
}

if(fech.charAt(2)!="/")
{
if (errorfecha!=1) {info=info+"- FECHA (El formato de fecha debe ser = dd/mm/aaaa)\n";errorfecha=1}
}
if(fech.charAt(5)!="/")
{
if (errorfecha!=1) {info=info+"- FECHA (El formato de fecha debe ser = dd/mm/aaaa)\n";errorfecha=1}
} 

if(fech.charAt(0)!="0" && fech.charAt(0)!="1" && fech.charAt(0)!=2 && fech.charAt(0)!=3)
{
if (errorfecha!=1) {info=info+"- FECHA (El dia debe estar entre 1 y 31)\n";errorfecha=1}
}
if(fech.charAt(3)!="0" && fech.charAt(3)!="1")
{
if (errorfecha!=1) {info=info+"- FECHA (El mes debe estar entre 1 y 12)\n";errorfecha=1}
}
//aqui transformas dias para que te de la edad exacta.
if (dias<6575){if (errorfecha!=1) {info=info+"- FECHA (No eres mayor de 18 años)\n";errorfecha=1}}


CadenaFecha2 = document.registro.fecha_completa.value

fecha2 = new fecha( CadenaFecha2 )

if (fecha2.mes==02){
if((fecha2.anio % 4)== 0){
if (fecha2.dia>29){if (errorfecha!=1) {info=info+"- FECHA (Febrero no puede tener mas de 29 dias)\n";errorfecha=1}
}}}
if (fecha2.mes==02){
if((fecha2.anio % 4)!= 0){
if (fecha2.dia>28){if (errorfecha!=1) {info=info+"- FECHA (Febrero no puede tener mas de 28 dias)\n";errorfecha=1}
}}}
if (fecha2.mes==01){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Enero no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==03){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Marzo no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==04){
if (fecha2.dia>30){if (errorfecha!=1) {info=info+"- FECHA (Abril no puede tener mas de 30 dias)\n";errorfecha=1}
}}
if (fecha2.mes==05){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Mayo no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==06){
if (fecha2.dia>30){if (errorfecha!=1) {info=info+"- FECHA (Junio no puede tener mas de 30 dias)\n";errorfecha=1}
}}
if (fecha2.mes==07){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Julio no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==08){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Agosto no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==09){
if (fecha2.dia>30){if (errorfecha!=1) {info=info+"- FECHA (Septiembre no puede tener mas de 30 dias)\n";errorfecha=1}
}}
if (fecha2.mes==10){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Octubre no puede tener mas de 31 dias)\n";errorfecha=1}
}}
if (fecha2.mes==11){
if (fecha2.dia>30){if (errorfecha!=1) {info=info+"- FECHA (Noviembre no puede tener mas de 30 dias)\n";errorfecha=1}
}}
if (fecha2.mes==12){
if (fecha2.dia>31){if (errorfecha!=1) {info=info+"- FECHA (Diciembre no puede tener mas de 31 dias)\n";errorfecha=1}
}}
}
if(info=="Has introducido mal los siguientes campos:\n\n")
	{	
     anos= dias / 365; 
     anos1 = Math.floor(anos)
     compru = "\edad: " + anos1;
     if (confirm(compru))
			document.registro.submit()
     }
	else
	  alert(info);
}

</SCRIPT>
<form name="registro" method="POST">
<INPUT id=fecha_completa type=hidden 
name=fecha_completa>
<INPUT id=dia 
style="border:1px solid #000080; " 
tabIndex=8 maxLength=2 size=2 name=dia></font><font face="Eras Lt BT" size="2"> <B>/</B> 
</font>
<font face="Verdana">
<font face="Eras Lt BT" size="1"> 
<INPUT id=mes 
style="border:1px solid #000080; " 
tabIndex=9 maxLength=2 size=2 name=mes></font><font face="Eras Lt BT" size="2"> <B>/</B> 
</font><font face="Eras Lt BT" size="1"> 
<INPUT id=ano 
style="border:1px solid #000080; " 
tabIndex=10 maxLength=4 size=4 name=ano></font><font face="Eras Lt BT" size="2"> <!--onChange="generarfechacompleta()"-->
</font>
</font></TD></TR>
<TR vAlign=top>

<p align="center"><font face="Verdana">
<a href="javascript:comprobaciones()">
<IMG tabIndex=14 alt="Conviértete en usuario registrado" 
src="image/Botones/siguiente_v3.gif" 
border=0></a></font></TD>
</TABLE>
</form>
</body>

</html>
espero q les sirva y avisenme si les sirvio.

Atte. Mohamed

Desde Venezuela - Isla de Margarita
  #5 (permalink)  
Antiguo 27/03/2006, 15:01
 
Fecha de Ingreso: marzo-2006
Mensajes: 1
Antigüedad: 18 años, 1 mes
Puntos: 0
Sonrisa ayuda con calculo de edad en PHP

Hola amigos, la sgte es para preguntarle si saben donde puedo encontrar el codigo fuente de un programita que me calcule la edad de una persona ademas me diga si el mes que nacio fue bisiesto o no, y tambien decirle cuando va a ser su proximo cumpleaños y cuantos dias,meses y semanas tiene de estar con vida

de antemano muchisima gracias
  #6 (permalink)  
Antiguo 27/03/2006, 19:33
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
en PHP ? bueno, hola, antes que nada bienvenido a los fotos !!!

MIra en foros del web tienes un foro por cada temática, este es el foro de HTML, nadie sabe nada de PHP, si tu duda es en ese lenguaje pues entra al foro de PHP y pregunta ahí...Pues te sabrán ayudar má que nosotros...

Saludos y esperoq ue estos foros te sean de tanta utilidad como a nosotros...
__________________
Esteban Quintana
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 16:50.