在 JavaScript 中从日期中减去年份

从日期中减去年份:

  1. 使用 getFullYear() 方法获取特定日期的年份。
  2. 使用 setFullYear() 方法设置日期的年份。
  3. setFullYear 方法将表示年份的数字作为参数并设置日期的值。
function subtractYears(numOfYears, date = new Date()) {
  date.setFullYear(date.getFullYear() - numOfYears);

  return date;
}

// 👇️ subtract 1 year from current Date
const result = subtractYears(1);

// 👇️ Subtract 2 years from another Date
const date = new Date('2022-04-26');

// 👇️ Sun Apr 26 2020
console.log(subtractYears(2, date));

我们创建了一个可重用的函数,它将年数和 Date 对象作为参数,并从日期中减去年数。

如果未提供 Date 对象,则该函数使用当前日期。

我们使用 getFullYear 方法来获取给定日期的年份。

setFullYear 方法将表示年份的整数作为参数,并设置日期的值。

注意setFullYear 方法会改变调用它的 Date 对象。 如果不想就地更改日期,请在调用该方法之前创建一个副本。

function subtractYears(numOfYears, date = new Date()) {
  const dateCopy = new Date(date.getTime());

  dateCopy.setFullYear(dateCopy.getFullYear() - numOfYears);

  return dateCopy;
}

const date = new Date('2022-04-27');

const result = subtractYears(3, date);

console.log(result); // 👉️ Sat Apr 27 2019

console.log(date); // 👉️ Wed Apr 27 2022 (didn't change original)

getTime 方法返回从 1970 年 1 月 1 日 00:00:00 到给定日期之间经过的毫秒数。

我们使用时间戳创建了 Date 对象的副本,因此在调用 setFullYear 方法时我们不会对其进行原地修改。

当我们必须在代码的其他位置使用原始 Date 对象时,复制日期非常有用。

一般来说,改变函数参数是一种不好的做法,因为多次将相同的参数传递给同一个函数会返回不同的结果。