Nó thường xảy ra rằng bạn muốn biết tuổi một người sẽ được vào một ngày cụ thể, hoặc năm , tháng và ngày giữa hai ngày.
Nếu bạn muốn tuổi của ngày hôm nay, hãy vượt qua một ngày hoặc một đối số đặt giá thầu.
function getAge(fromdate, todate){
if(todate) todate= new Date(todate);
else todate= new Date();
var age= [], fromdate= new Date(fromdate),
y= [todate.getFullYear(), fromdate.getFullYear()],
ydiff= y[0]-y[1],
m= [todate.getMonth(), fromdate.getMonth()],
mdiff= m[0]-m[1],
d= [todate.getDate(), fromdate.getDate()],
ddiff= d[0]-d[1];
if(mdiff < 0 || (mdiff=== 0 && ddiff<0))--ydiff;
if(mdiff<0) mdiff+= 12;
if(ddiff<0){
fromdate.setMonth(m[1]+1, 0);
ddiff= fromdate.getDate()-d[1]+d[0];
--mdiff;
}
if(ydiff> 0) age.push(ydiff+ ' year'+(ydiff> 1? 's ':' '));
if(mdiff> 0) age.push(mdiff+ ' month'+(mdiff> 1? 's':''));
if(ddiff> 0) age.push(ddiff+ ' day'+(ddiff> 1? 's':''));
if(age.length>1) age.splice(age.length-1,0,' and ');
return age.join('');
}
getAge("1/25/1974")>> 37 years 8 months and 26 days
getAge("9/15/1984")>> 27 years 1 month and 5 days
getAge("12/20/1984","10,20,2011")>>26 years and 9 months
getAge(new Date(),"12/25/2011")+' till Christmas'>>
2 months and 5 days till Christmas
getAge("6/25/2011")>> 3 months and 25 days
Chính xác bạn muốn nhận được gì. Tháng còn lại cho đến sinh nhật tiếp theo? hoặc tuổi của người đó? Vui lòng làm rõ. Cảm ơn. – HashimR