是否可以使此代码以小时为单位显示 42 年(包括闰年)?

Is it possible to make this code to display 42 years in hours ( including leap years)?

age=42;
days +=(age/4);//leap years
var days= age*365;
var hours= days*24;
var age;
console.log(hours);

这段代码是 mimo 在其中一个课程中提供给我的,但我无法解决这个问题。你能帮我解决这个不便吗?

您可以通过乘以 365.25 来考虑闰年。

查看此代码片段:

function ageInHours(years) {
   return years * 365.25 * 24;
}

console.log(ageInHours(42));

核心问题是你必须知道它实际上是哪一年。

每4年有一个闰年。你有数字 42,我们可以写成 10*4 + 2,因为 4 年期间的数字是我们的利息。概括地说,它基本上是 x*4 + 2 和想象它如何工作的简单示例是 x=1.

所以您的示例与 6 年期间几乎相同。我们可以很容易地找到两个基于闰年的不同小时率的例子。

2010 - 2016 will have two leap years (2010 and 2014).
2007 - 2013 will have only one leap year (2010)

所以为了找到正确的数字,你必须得到开始年份,你必须在接下来的 42 年中循环。每当年份可乘以 4 时,您就会额外增加 1 天。但是请注意,如果是 100 年(即 20 年前我们有 2000 年),则不使用此规则并且与其他年份相同。

如果我没有误会你的意思并且你只想计算年小时数(并且没有像 2000-2042 这样的年份的特定界限),你可以对任何随机年份执行以下操作。

由于每年有 365 天,每天有 24 小时,您可以像这样简单地计算每年的小时数:year * 365 * 24。但是为了也计算闰年,因为 闰年每 4 年发生一次,你应该 将你想要的年份除以 4(为了检查其中有多少闰年)并计算它的底数,那么底数就是你得到的额外天数,所以你应该单独计算它们并与指定的年份相加。 所以最终的输出应该是这样的 year * 365 * 24 + additionalDaysDueToLeapYears * 24.

你的代码最终应该是这样的:

function yearToHour(year) {
  const leapYears = Math.floor(year / 4);
  return year * 365 * 24 + leapYears * 24;
}

console.log(yearToHour(42));

我也遇到了困难。然而,也是我的错,我没有先学习 Javascript 就开始制作网站项目。

这个问题的答案是:

var age;
age = 42;
var days = age * 365;
days += (age / 4); *// Leap years
var hours = days * 24;
console.log(hours);

42 * 8766 = 368172

完成。

不需要javascript。