Javascript Date()以天为单位计算不工作的年龄

Javascript Date()以天为单位计算不工作的年龄,javascript,Javascript,这是我的代码,取自这里: var today=新日期(); 生日_val=$(“.datepicker”).val().split(“/”);//输入值 生日=新日期(生日[2]、生日[1]、生日[0])//生日对象 var age=today.getFullYear()-生日.getFullYear(); var m=today.getMonth()-生日.getMonth(); var d=today.getDay()-生日.getDay(); if(m

这是我的代码,取自这里:

var today=新日期();
生日_val=$(“.datepicker”).val().split(“/”);//输入值
生日=新日期(生日[2]、生日[1]、生日[0])//生日对象
var age=today.getFullYear()-生日.getFullYear();
var m=today.getMonth()-生日.getMonth();
var d=today.getDay()-生日.getDay();
if(m<0 | |(m==0&&today.getDate()

除了一天之外,它的计算是正确的——没有考虑到这一点,我也不知道为什么。有人吗?

编辑:这不是正确的答案,尽管OP上有这样的标记


您使用的方法不正确,无法检索当月的日期

Date.getDay
返回一周中的某一天


Date.getDate
返回当月的日期

出了什么问题?你能举个例子吗?您知道getDay()返回的是一周中的哪一天(0-6)?您能举个例子吗?很抱歉,这是我的错误,我得到的值是错误的:生日=新日期(生日[2],生日[1],生日[0]);本应为生日=新日期(生日[2],生日[0]-1,生日[1]);抱歉,这是我的错误,我的值是错误的:生日=新日期(生日[2],生日[1],生日[0]);本应为生日=新日期(生日[2],生日[0]-1,生日[1]);但是答案是错误的,因为您甚至没有使用
d
的值;根本原因完全是其他原因。
        var today = new Date();
        birthday_val = $(".datepicker").val().split('/'); // input value
        birthday = new Date(birthday_val[2],birthday_val[1],birthday_val[0]); // birthday date object
        var age = today.getFullYear() - birthday.getFullYear();
        var m = today.getMonth() - birthday.getMonth();
        var d = today.getDay() - birthday.getDay();
        if (m < 0 || (m === 0 && today.getDate() < birthday.getDate()) ) {
            age--;
        }