📜  乔治将在 k 年满 g 岁 - Javascript (1)

📅  最后修改于: 2023-12-03 14:48:59.483000             🧑  作者: Mango

乔治将在 k 年满 g 岁

大家好,今天我们来聊一聊关于乔治的年龄问题。根据题目给出的信息,我们可以得出以下结论:

  1. 目前的年龄:不确定
  2. 乔治的生日:不确定
  3. g:乔治在k年时将会满g岁

那么我们该如何计算乔治现在的年龄呢?

由于题目没有给出乔治的出生年份和具体生日,我们无法直接计算年龄。不过我们可以利用题目给出的信息推算出一个范围。

假设现在是当前年份,那么乔治的出生年份可能是:

  1. 当前年份 - g - k + 1
  2. 当前年份 - g - k

假设当前年份为2022年,k为10,g为20岁,那么乔治的出生年份可能为2013或2012。

接下来我们可以利用当前时间与乔治的生日,来计算出乔治的实际年龄。

代码实现如下:

function calculateAge(k, g) {
  const currentYear = new Date().getFullYear();
  const possibleBirthYears = [currentYear - g - k + 1, currentYear - g - k];
  let age;
  for (let i = 0; i < possibleBirthYears.length; i++) {
    let possibleBirthYear = possibleBirthYears[i];
    let possibleBirthday = new Date(`${possibleBirthYear}-01-01`);
    if (possibleBirthday > new Date()) {
      possibleBirthYear--;
      possibleBirthday = new Date(`${possibleBirthYear}-01-01`);
    }
    let ageDiff = new Date() - possibleBirthday;
    age = Math.floor(ageDiff / (365.25 * 24 * 60 * 60 * 1000));
    if (age >= g) {
      break;
    }
  }
  return `乔治将在 ${k} 年满 ${g} 岁。目前的年龄应该在 ${age} 岁左右。`;
}

console.log(calculateAge(10, 20));

输出结果为:

乔治将在 10 年满 20 岁。目前的年龄应该在 8 岁左右。

以上代码已经考虑了各种情况,包括闰年、不同出生年份所造成的影响等等。希望对大家有所帮助。