JS的new Date()对象在其他地方被意外同步



我想在一个对象中存储两个值:today, todayInOneYear。我使用一个函数来计算+1年。

obj = {}
today = new Date();
obj = {
  today: today,
  oneYear: addOneYear(today)
}
console.log(obj)
function addOneYear(date) {
  date.setFullYear(date.getFullYear() + 1);
  return date;
}

问题:今天和今天inoneyear是一样的。但我想是两个不同的日期。从现在(今天)开始一次,一年后再一次。你知道我错过了什么吗?

您需要克隆Date对象:

obj = {}
today = new Date();
obj = {
  today: today,
  oneYear: addOneYear(today)
}
console.log(obj)
function addOneYear(date) {
  let clone = new Date(date);
  clone.setFullYear(clone.getFullYear() + 1);
  return clone;
}

您可以试试下面的代码

obj = {}
today = new Date();
obj = {
  today: today,
  oneYear: addOneYear(today)
}
console.log(obj)
function addOneYear(date) {
  const aYearFromNow = new Date(date);
  aYearFromNow.setFullYear(aYearFromNow.getFullYear() + 1);
    console.log(aYearFromNow)
  return aYearFromNow;
}

最新更新