Показать сообщение отдельно
  #1 (permalink)  
Старый 14.07.2022, 15:26
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Операции сложения и вычитания с входной датой
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 .....;
}

Последний раз редактировалось NovichokJS, 14.07.2022 в 17:48.
Ответить с цитированием