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; }