Warm tip: This article is reproduced from serverfault.com, please click

javascript-如何计算两个日期之间的年数?

(javascript - How can I calculate the number of years between two dates?)

发布于 2011-11-16 13:27:31

我想获取两个日期之间的年数。我可以得到这两天之间的天数,但是如果我将其除以365,结果将是不正确的,因为有些年份有366天。

这是我的代码来获取日期差:

var birthday = value;//format 01/02/1900
var dateParts = birthday.split("/");

var checkindate = new Date(dateParts[2], dateParts[0] - 1, dateParts[1]);   
var now = new Date();
var difference = now - checkindate;
var days = difference / (1000*60*60*24);

var thisyear = new Date().getFullYear();
var birthyear = dateParts[2];

    var number_of_long_years = 0;
for(var y=birthyear; y <= thisyear; y++){   

    if( (y % 4 == 0 && y % 100 == 0) || y % 400 == 0 ) {

                    number_of_long_years++;             
    }
}   

日计数工作完美。我尝试添加一年为366天的额外天数,并且正在执行以下操作:

var years = ((days)*(thisyear-birthyear))
            /((number_of_long_years*366) + ((thisyear-birthyear-number_of_long_years)*365) );

我正在计算年数。这是正确的,还是有更好的方法来做到这一点?

Questioner
Kanishka Panamaldeniya
Viewed
0
Leo 2018-11-09 02:28:50

可能不是你要找的答案,但以2.6kb的速度,我不会尝试重新发明轮子,而是使用诸如moment.js之类的东西没有任何依赖关系。

diff方法可能是你想要的:http : //momentjs.com/docs/#/displaying/difference/