几天前是几号?
重要性: 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)