const getNewDate = initValue => {
let resultDate = initValue;
const newValue = {
add(dateInterval, number) {
switch (dateInterval) {
case 'years':
resultDate = initValue.getFullYear() + number;
break;
case 'months':
resultDate = initValue.getMonth() + number;
break;
case 'days':
resultDate = initValue.getDay() + number;
break;
case 'hours':
resultDate = initValue.getHours() + number;
break;
case 'minutes':
resultDate = initValue.getMinutes() + number;
break;
case 'seconds':
resultDate = initValue.getSeconds() + number;
break;
case 'milliseconds':
resultDate = initValue.getMilliseconds() + number;
break;
}
return this;
},
subtract(dateInterval, number) {
switch (dateInterval) {
case 'years':
resultDate = initValue.getFullYear() - number;
break;
case 'months':
resultDate = initValue.getMonth() - number;
break;
case 'days':
resultDate = initValue.getDay() - number;
break;
case 'hours':
resultDate = initValue.getHours() - number;
break;
case 'minutes':
resultDate = initValue.getMinutes() - number;
break;
case 'seconds':
resultDate = initValue.getSeconds() - number;
break;
case 'milliseconds':
resultDate = initValue.getMilliseconds() - number;
break;
}
return this;
},
result() {
return resultDate;
},
};
return newValue;
};
const res = getNewDate(new Date(2020, 0, 7, 17, 17, 17))
.add('minutes', 2)
.add('days', 8)
.subtract(years, 1)
.result();
// Output: ...Jan 15 2019 17:19:17.....
console.log(res);
Помогите плиз доделать чтобы работало. Функция принимает входящую дату и возвращать объект с набором методов. Метод result должен вернуть новую дату после всех преобразований. Цепочка вызова методов может быть в любом порядке.
Словом, мне нужно сделать правильное выражение в методе
result() {
return .....;
}