2012-04-04 44 views
8

Duplicate có thể:
Calculate age in JavaScriptNhận tuổi từ sinh

Trong một thời điểm nào của mã JS của tôi, tôi có jquery đối tượng ngày đó là ngày tháng năm sinh của người đó. Tôi muốn tính tuổi của người đó dựa trên ngày sinh của anh ta.

Bất kỳ ai cũng có thể cung cấp mã ví dụ về cách đạt được điều này.

+2

downvoted, vì nó là [tìm kiếm một cách dễ dàng] (https://duckduckgo.com/?q=get%20age%20from%20birth%20date%20javascript). Không thể nghĩ làm thế nào bạn nhận được rằng upvote! – halfer

Trả lời

38

Hãy thử chức năng này ...

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

HOẶC

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

Rất tuyệt! Xem cách bạn chỉ có một lệnh trong if (age--;), các dấu ngoặc là tùy chọn, nhưng vẫn khá tốt. Tôi cũng sẽ kết hợp tất cả các khai báo var vào một phân tách bằng dấu phẩy, nhưng tổng thể, mã tuyệt vời, rất hữu ích. Cảm ơn bạn! – davewoodhall

+0

Đã thử bản demo và đã sinh ngày 01 tháng 6 năm 1998 (hôm nay là ngày 02 tháng 11 năm 2016). Điều đó có nghĩa là người 18 tuổi bây giờ. Nhưng nó cho thấy thông báo lỗi rằng Tuổi nên lớn hơn hoặc bằng 18. Không chính xác, do đó bỏ phiếu xuống. – Syed

+0

mã rất hữu ích –

20

JsFiddle

Bạn có thể tính toán với Ngày.

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

Tôi nghĩ rằng bạn quên nhân với 24 ở hàng cuối cùng –

+0

Hehe * doh *. Tuy nhiên JsFiddle đã đúng. Cảm ơn –

+4

Có lẽ tốt nhất là chia cho 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

Chính xác hơn số được đánh dấu ở trên là câu trả lời. Cảm ơn!! – Syed

Các vấn đề liên quan