2012-04-04 18 views
8

Duplicar posibles:
Calculate age in JavaScriptObtener edad a partir del nacimiento

En algún momento de mi código JS tengo objeto de fecha jQuery que es la fecha de nacimiento de la persona. Quiero calcular la edad de la persona en función de su fecha de nacimiento.

¿Alguien puede dar un código de ejemplo sobre cómo lograr esto.

+2

downvoted, ya que es [fácilmente búsquedas] (https://duckduckgo.com/?q=get%20age%20from%20birth%20date%20javascript). ¡No puedo pensar cómo conseguiste ese voto! – halfer

Respuesta

38

Pruebe esta función ...

function calculate_age(birth_month,birth_day,birth_year) 
{ 
    today_date = new Date(); 
    today_year = today_date.getFullYear(); 
    today_month = today_date.getMonth(); 
    today_day = today_date.getDate(); 
    age = today_year - birth_year; 

    if (today_month < (birth_month - 1)) 
    { 
     age--; 
    } 
    if (((birth_month - 1) == today_month) && (today_day < birth_day)) 
    { 
     age--; 
    } 
    return age; 
} 

O

function getAge(dateString) 
{ 
    var today = new Date(); 
    var birthDate = new Date(dateString); 
    var age = today.getFullYear() - birthDate.getFullYear(); 
    var m = today.getMonth() - birthDate.getMonth(); 
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) 
    { 
     age--; 
    } 
    return age; 
} 

See Demo.

+1

¡Muy bueno! Como solo tiene un comando en el if (age--;), los corchetes son opcionales, pero aún así son bastante buenos. También combinaría todas las declaraciones de var en una división con comas, pero en general, excelente código, muy útil. ¡Gracias amigo! – davewoodhall

+0

Intentó la demostración y dio la fecha de nacimiento el 1 de junio de 1998 (hoy es el 2 de noviembre de 2016). Eso significa que la persona tiene 18 años ahora. Pero muestra un mensaje de error que indica que Age debe ser mayor o igual que 18. No es exacto, por lo tanto, se vota hacia abajo. – Syed

+0

código muy útil –

20

JsFiddle

Se puede calcular con fechas.

var birthdate = new Date("1990/1/1"); 
var cur = new Date(); 
var diff = cur-birthdate; // This is the difference in milliseconds 
var age = Math.floor(diff/31557600000); // Divide by 1000*60*60*24*365.25 
+0

Creo que se olvidó de multiplicar por 24 en la última fila –

+0

Hehe * doh *. Sin embargo, JsFiddle tenía razón. Gracias –

+4

Probablemente es mejor dividir por 1000 * 60 * 60 * 24 * 365.25 –

4
function getAge(birthday) { 
    var today = new Date(); 
    var thisYear = 0; 
    if (today.getMonth() < birthday.getMonth()) { 
     thisYear = 1; 
    } else if ((today.getMonth() == birthday.getMonth()) && today.getDate() < birthday.getDate()) { 
     thisYear = 1; 
    } 
    var age = today.getFullYear() - birthday.getFullYear() - thisYear; 
    return age; 
} 

JSFiddle

+0

Más preciso que el que se encuentra arriba marcado AS como la respuesta. ¡¡Gracias!! – Syed

Cuestiones relacionadas