30 sept 2016

Javascript, Calcular la edad con la fecha de nacimiento

Calcular la edad sabiendo la fecha de nacimiento es otra de las tareas comunes en el desarrollo de un proyecto.

usando Javascript podemos calcular la edad facilmente


function Edad(FechaNacimiento) {

    var fechaNace = new Date(FechaNacimiento);
    var fechaActual = new Date()

    var mes = fechaActual.getMonth();
    var dia = fechaActual.getDate();
    var año = fechaActual.getFullYear();

    fechaActual.setDate(dia);
    fechaActual.setMonth(mes);
    fechaActual.setFullYear(año);

    edad = Math.floor(((fechaActual - fechaNace) / (1000 * 60 * 60 * 24) / 365));
   
    return edad;
}

Usando esta función podemos obtener la edad sabiendo la fecha de nacimiento.

Ejemplo supongamos que tenemos un input tipo 'date' en nuestra web

<input type='date' id='fechaNace'>

Nuestra función para calcular la fecha de nacimiento la usaríamos de la siguiente forma


 
var fecha = document.getElementById('fechaNace').value;

//Ejemplo 
// fecha =  '1994-06-10';

var edad = Edad(fecha);

//edad = 22;

Ejemplo de uso

4 comentarios:

  1. HOLA muy bien, una consulta como se hace cuando tienes un campo para introducir la fecha de nacimiento y otro campo para que salga la edad --tipo formulario,

    ResponderBorrar
  2. gracias por tu post :) tu codigo me dio la idea

    ResponderBorrar
  3. mi codigo es parecido, solo que es a partir de un numero de 6 digitos, si la fecha fuera 701228, es decir 28 de 12 del 70. Ahí les va:
    function micalculodeEdad(fecha) {
    //despalillo el carnet de identidad para obtener los primeros 6 digitos
    var compl = fecha.substr(0,6);
    var ano = compl.substr(0,2);
    var mes = compl.substr(2,2);
    var dia = compl.substr(4,2);

    var hoy = new Date();
    //obtengo el año actual
    var anohoy = hoy.getFullYear();
    //lo conviarto a string para tener los dos primeros digitos
    var strnano = anohoy.toString();
    // obtengo los dos primeros digitos
    var anoactual = strnano.substr(0,2);
    //si el año es mayor o igual que el año que obtuve de dos cifras
    //y es menor o igual que 99, pos le pongo un 19 delante,
    //de lo contrario, pos un 20
    if(ano >= anoactual && ano <= 99){
    ano = '19'+ano;
    }else{
    ano = anoactual + ano;
    }
    // armo la fecha con formato yyy-mm-dd
    var fech = ano +'-'+ mes +'-'+ dia;
    // obtengo fecha de nacimiento - un dia
    var cumpleanos = new Date(fech);
    // resto el año actual menos el de nacimiento
    var edad = hoy.getFullYear() - cumpleanos.getFullYear();
    //resto el mes actual menos el de nacimiento
    var m = hoy.getMonth() - cumpleanos.getMonth();
    //con esta condición determino si en la fecha actual ya cumplió o no años
    if (m < 0 || (m === 0 && hoy.getDate() < cumpleanos.getDate())) {
    edad--;
    }
    // y al fin obtengo la edad!!! jejejeje
    return edad;
    }

    ResponderBorrar