![]() |
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. |
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 |
| La zona horaria es GMT -6. Ahora son las 10:16. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.