返回课程

几天前是几号?

重要性: 4

创建一个函数 getDateAgo(date, days),返回从 date 开始 days 天前的日期的月份中的日期。

例如,如果今天是 20 号,那么 getDateAgo(new Date(), 1) 应该返回 19 号,而 getDateAgo(new Date(), 2) 应该返回 18 号。

应该可靠地工作 days=365 天或更长时间

let date = new Date(2015, 0, 2);

alert( getDateAgo(date, 1) ); // 1, (1 Jan 2015)
alert( getDateAgo(date, 2) ); // 31, (31 Dec 2014)
alert( getDateAgo(date, 365) ); // 2, (2 Jan 2014)

附注:该函数不应修改给定的 date

打开带有测试的沙箱。

思路很简单:从 date 中减去给定的天数。

function getDateAgo(date, days) {
  date.setDate(date.getDate() - days);
  return date.getDate();
}

…但是该函数不应更改 date。这很重要,因为提供日期的外部代码不希望它发生变化。

为了实现它,让我们克隆日期,如下所示

function getDateAgo(date, days) {
  let dateCopy = new Date(date);

  dateCopy.setDate(date.getDate() - days);
  return dateCopy.getDate();
}

let date = new Date(2015, 0, 2);

alert( getDateAgo(date, 1) ); // 1, (1 Jan 2015)
alert( getDateAgo(date, 2) ); // 31, (31 Dec 2014)
alert( getDateAgo(date, 365) ); // 2, (2 Jan 2014)

在沙箱中打开带有测试的解决方案。