renovations
This commit is contained in:
parent
4b8b168fd2
commit
c7d4c7e3ff
172 changed files with 869 additions and 244 deletions
|
@ -0,0 +1,6 @@
|
|||
function getDateAgo(date, days) {
|
||||
var dateCopy = new Date(date);
|
||||
|
||||
dateCopy.setDate( date.getDate() - days );
|
||||
return dateCopy.getDate();
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
describe("getDateAgo", function() {
|
||||
|
||||
it("1 день до 02.01.2015 -> число 1", function() {
|
||||
assert.equal( getDateAgo(new Date(2015, 0, 2), 1), 1 );
|
||||
});
|
||||
|
||||
|
||||
it("2 день до 02.01.2015 -> число 31", function() {
|
||||
assert.equal( getDateAgo(new Date(2015, 0, 2), 2), 31 );
|
||||
});
|
||||
|
||||
it("100 дней от 02.01.2015 -> число 24", function() {
|
||||
assert.equal( getDateAgo(new Date(2015, 0, 2), 100), 24 );
|
||||
});
|
||||
|
||||
it("365 дней от 02.01.2015 -> число 2", function() {
|
||||
assert.equal( getDateAgo(new Date(2015, 0, 2), 365), 2 );
|
||||
});
|
||||
|
||||
it("не меняет переданный объект Date", function() {
|
||||
var date = new Date(2015, 0, 2);
|
||||
var dateCopy = new Date(date);
|
||||
getDateAgo(dateCopy, 100);
|
||||
assert.equal(date.getTime(), dateCopy.getTime());
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,29 @@
|
|||
Из даты `date` нужно вычесть указанное количество дней. Это просто:
|
||||
|
||||
```js
|
||||
function getDateAgo(date, days) {
|
||||
date.setDate( date.getDate() - days );
|
||||
return date.getDate();
|
||||
}
|
||||
```
|
||||
|
||||
Ситуацию осложняет то, что исходный объект даты не должен меняться. Это разумное требование, оно позволит избежать сюрпризов.
|
||||
|
||||
Для того чтобы ему соответствовать, создадим копию объекта даты:
|
||||
|
||||
```js
|
||||
//+ run
|
||||
function getDateAgo(date, days) {
|
||||
var dateCopy = new Date(date);
|
||||
|
||||
dateCopy.setDate( date.getDate() - days );
|
||||
return dateCopy.getDate();
|
||||
}
|
||||
|
||||
var date = new Date(2015, 0, 2);
|
||||
|
||||
alert( getDateAgo(date, 1) ); // 1, (1 января 2015)
|
||||
alert( getDateAgo(date, 2) ); // 31, (31 декабря 2014)
|
||||
alert( getDateAgo(date, 365) ); // 2, (2 января 2014)
|
||||
```
|
||||
|
17
1-js/4-data-structures/11-datetime/4-get-date-ago/task.md
Normal file
17
1-js/4-data-structures/11-datetime/4-get-date-ago/task.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
# День указанное количество дней назад
|
||||
|
||||
[importance 4]
|
||||
|
||||
Создайте функцию `getDateAgo(date, days)`, которая возвращает число, которое было `days` дней назад от даты `date`.
|
||||
|
||||
Например, для 2 января 2015:
|
||||
|
||||
```js
|
||||
var date = new Date(2015, 0, 2);
|
||||
|
||||
alert( getDateAgo(date, 1) ); // 1, (1 января 2015)
|
||||
alert( getDateAgo(date, 2) ); // 31, (31 декабря 2014)
|
||||
alert( getDateAgo(date, 365) ); // 2, (2 января 2014)
|
||||
```
|
||||
|
||||
P.S. Важная деталь: в процессе вычислений функция не должна менять переданный ей объект `date`.
|
Loading…
Add table
Add a link
Reference in a new issue