naveen在这篇文章中写的所有内容都很有意义:Calculate age given the birth date in the format YYYYMMDD
...除if(m <0)部分之外的最后一位。有人可以向我解释吗? 到目前为止,我明白了:如果month小于0,那么为什么要增加年龄并减少1?
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;
}
答案 0 :(得分:0)
var age = today.getFullYear() - birthDate.getFullYear();
对您的年龄(当前年份-出生年份)进行初步计算
var m = today.getMonth() - birthDate.getMonth();
m =当前月份的数字-您出生的月份的数字(注意:它可以是负值)
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
检查以下条件之一是否成立: -m为负(当前月份在您出生的月份之前),或 -m等于0,并且该月的当前日期在您出生的那一天的日期之前。
在这种情况下,您需要从之前计算的年龄(年数)中减去1。
考虑这种情况:
今天:2018年9月20日。
您出生于:2000年9月10日。
开始计算的年龄= 18(2018-2000)。
m == 0并且该月的当前日期在您出生的那一天的一天之前。
实际年龄(减去一个):17