逐年包括闰年

Day to year including leap years

我想将 天转换为年 ,包括闰年,但不使用 new Date()。我想用年简单地数365天

所以我试过登录:

var year = 1460/365; // 4 years
var leap = 1461/365; // 4 years including leap years.
console.log(year);  // result is 4 which is proper
console.log(leap);  // result is 4.002739726027397 but which should also be 4.

您可以尝试这样的操作:

逻辑:

  • 获取总年数:parseInt(days/ 365)
  • 现在你必须处理闰年数,所以parseInt((days/4)/365)
  • 现在您必须在年份计数中调整此值,因此减去 leaps/365 以获得它们的偏移量并从年份中减去。
  • 现在您将不得不处理多余的日子。假设有 4 个闰年和 10 个盈余日,但按 365 计算。所以你实际盈余是 10-4surplusDays - leaps
  • 现在计算它的值并将它们与年相加就是这个值。

function getYearsByDays(days) {
  var daysInYear = 365;
  var noOfLeaps = parseInt((days / 4) / daysInYear)
  var years = parseInt(days / daysInYear);
  var remainingDays = days % daysInYear;
  return (years - (noOfLeaps / daysInYear) + (remainingDays/ daysInYear))
}

console.log(getYearsByDays(365));
console.log(getYearsByDays(365 * 4 + 1));
console.log(getYearsByDays(10000));

如果你这样想,逻辑可能会简单很多: 地球自转需要 365.2425 天,小数部分加起来大约每 4 个周期一天,这就是为什么我们在闰年增加额外的一天。

因此: 1天=1/365.2425年

你可以使用这个常量计算出准确的年数