Foros del Web » Programando para Internet » Javascript »

Pedir fecha de nacimiento y calcular si es mayor de edad o no

Estas en el tema de Pedir fecha de nacimiento y calcular si es mayor de edad o no en el foro de Javascript en Foros del Web. Buenas, soy completamente novato en javascript y me han planteado el problema de introducir la fecha de nacimiento usando prompt y calcular la diferencia de ...
  #1 (permalink)  
Antiguo 15/05/2008, 02:49
 
Fecha de Ingreso: mayo-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Pedir fecha de nacimiento y calcular si es mayor de edad o no

Buenas, soy completamente novato en javascript y me han planteado el problema de introducir la fecha de nacimiento usando prompt y calcular la diferencia de edad introducida a el dia actual (utilizando new date creo) para que luego aparezca un alert anunciando si es mayor de edad o no.
He buscado bastante por internet y siempre encuentro el mismo script, que utiliza el metodo split que no acabo de enternder del todo como funciona en el codigo.
Este es el script que siempre encuentro i no acabo de entender:
//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
}

No busco que alguien me de un script entero, solamente si alguien me puede explicar que objetos serian los adecuados y un poco como se usan porque trato de entenderlo pero no tengo nociones

PD: tampoco ninguno de mis amigos y conocidos me ha podido facilitar la informacion.
  #2 (permalink)  
Antiguo 15/05/2008, 05:19
Avatar de miguel0n  
Fecha de Ingreso: abril-2008
Ubicación: Madrid
Mensajes: 48
Antigüedad: 16 años
Puntos: 0
Re: Pedir fecha de nacimiento y calcular si es mayor de edad o no

hola, pues el metodo split permite dividir en varios bloques una cadena de texto, formando un array, segun el valor quele pasemos, en este caso '/'. En el codigo esta puesto 'fecha.split("/")', es decir que para la fecha 15/05/2008 tendras tres campos quedandote así

array_fecha[0] --> 15
array_fecha[1] --> 05
array_fecha[2] --> 2008

por eso compara para ver si la fecha es correcta.
if (array_fecha.length!=3)
return false

Puedes probar el contenido de cada elemento del array con alert(array_fecha[2]);

Un saludo
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 01:01.