renovations

This commit is contained in:
Ilya Kantor 2015-01-11 01:54:57 +03:00
parent 4b8b168fd2
commit c7d4c7e3ff
172 changed files with 869 additions and 244 deletions

View file

@ -0,0 +1,6 @@
function getDateAgo(date, days) {
var dateCopy = new Date(date);
dateCopy.setDate( date.getDate() - days );
return dateCopy.getDate();
}

View file

@ -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());
});
});

View file

@ -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)
```

View 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`.