Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 年龄计算不正确?_Javascript - Fatal编程技术网

Javascript 年龄计算不正确?

Javascript 年龄计算不正确?,javascript,Javascript,评估后的年龄不能大于等于65岁,但对于这些值,情况并非如此。如果您只想将年龄显示为已完成的年份,这是一个很好的方法: Input On which it produced faulty results DateString1 1988-04-05 00:00:00 1965-05-06 00:00:00 1971-03-14 00:00:00 1975-11-10 00:00:00 1981-10-21 00:00:00 1974-06-01 00:00:00 1988-08-11 00:00

评估后的年龄不能大于等于65岁,但对于这些值,情况并非如此。

如果您只想将年龄显示为已完成的年份,这是一个很好的方法:

Input On which it produced faulty results 
DateString1
1988-04-05 00:00:00
1965-05-06 00:00:00
1971-03-14 00:00:00
1975-11-10 00:00:00
1981-10-21 00:00:00
1974-06-01 00:00:00
1988-08-11 00:00:00

DateString2
2016-03-31 00:00:00
它的工作原理是将日期“转换”为yyyymmdd形式的十进制数字,如1974年4月27日的19740427。然后,它从当前日期中减去出生日期,将结果除以10000,并跳过余数

使用的因子100和10000实际上是相当任意的,只要月份因子>=31,年份因子>=(12*月因子),任何因子都可以工作


调用
getAgeInFullYears('1988-04-05','2016-02-18')
返回27,例如。

它在什么情况下有故障?都是吗?那>=65行和代码有什么关系?是的,所有的都有。嗯,基本上我是通过这两个日期和年龄应该是小于65一直。但对于这些情况,当我运行代码时,计算的年龄为>或=到65,这些情况中没有一个返回年龄>=65。此处相同。当我运行您的代码时,它似乎执行正确。如何调用此函数?你能再给我看一些代码吗?我假设输入有问题。
Input On which it produced faulty results 
DateString1
1988-04-05 00:00:00
1965-05-06 00:00:00
1971-03-14 00:00:00
1975-11-10 00:00:00
1981-10-21 00:00:00
1974-06-01 00:00:00
1988-08-11 00:00:00

DateString2
2016-03-31 00:00:00
function getAgeInFullYears(birthdate, today) {
    // These two lines are not necessary if function is called with proper Date objects
    birthdate = new Date(birthdate);
    today = new Date(today);

    birthdate = birthdate.getFullYear() * 10000 +
                birthdate.getMonth() * 100 +
                birthdate.getDate();

    today = today.getFullYear() * 10000 +
            today.getMonth() * 100 +
            today.getDate();

    return Math.floor((today - birthdate) / 10000);
}