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

新手上路,请多包涵

我想获得两个日期之间的年数。我可以得到这两天之间的天数,但如果我将它除以 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) );

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

原文由 Kanishka Panamaldeniya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 993
2 个回答

可能不是您正在寻找的答案,但在 2.6kb 时,我不会尝试重新发明轮子,我会使用类似 moment.js 的东西。没有任何依赖关系。

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

原文由 Leo 发布,翻译遵循 CC BY-SA 4.0 许可协议

圆滑的基础 javascript 函数。

  function calculateAge(birthday) { // birthday is a date
   var ageDifMs = Date.now() - birthday;
   var ageDate = new Date(ageDifMs); // miliseconds from epoch
   return Math.abs(ageDate.getUTCFullYear() - 1970);
 }

原文由 testUserPleaseIgnore 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题