Hace un tiempo habíamos visto cómo obtener una edad desde una fecha de nacimiento en PostgreSQL, en MySQL y en MS SQL-Server. ¿Y en javascript? Vamos a ver tres funciones:
En la primera función el parámetro que recibiremos será una cadena con una fecha en formato YYYYMMDD (por ejemplo 20180211 para hoy):
function terIdade(cadeaData) {
var hoxe = new Date();
var nacemento = new Date(cadeaData);
var idade = hoxe.getFullYear() - nacemento.getFullYear();
var m = hoxe.getMonth() - nacemento.getMonth();
if (m < 0 || (m === 0 && hoxe.getDate() < nacemento.getDate())) {
idade--;
}
return idade;
}
Otra opción, pasando el mismo parámetro, es conseguir el resultado el milisengundos y operar con él para obtener la edad. Para eso dividiremos la diferencia entre fechas entre 1000*60*60*24*365.25:
function terIdade(cadeaData) {
var nacemento = new Date(cadeaData);
var data = new Date();
var dif = data-birthdate;
var idade = Math.floor(dif/31536000000);
return idade;
}
La tercera opción sería no mandar a la función una cadena con la fecha, sino separados el año, el mes y el día (pasándoselos como enteros, no como cadenas). Y para el resto haríamos más o menos la misma operación que en el ejemplo.
function terIdade(ano,mes,dia) {
var hoxe = new Date();
var idade = hoxe.getFullYear() - ano;
var m = hoxe.getMonth() - mes;
if (m < 0 || (m === 0 && hoxe.getDate() < dia)) {
idade--;
}
return idade;
}