您能帮我了解一下用于计算年龄的代码吗?

时间:2019-05-09 18:55:27

标签: javascript

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

1 个答案:

答案 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