Как создать функцию даты и времени, первым аргументом которой будет число, а вторым единица измерения, которая будет добавлять определенный параметр

В реализации необходимо использовать объект Date, пример:

function add(element, name){   
var myDate = new Date();

if ( name == 'year') {
      myDate.setFullYear(myDate.getFullYear() + element);
}
else if ( name == 'month') {
    myDate.setMonth(myDate.getMonth() + element);
}
else if ( name == 'day') {
    myDate.setDate(myDate.getDate() + element);
}
else if ( name == 'minute') {
    myDate.setMinutes(myDate.getMinutes() + element);
}
else if ( name == 'hour') {
     myDate.setHours(myDate.getHours() + element);
} else {
     console.log("Ne to");
}
 return console.log(myDate);
}

add(2, 'year');
add(6, 'month');
add(3, 'day');
add(23,'hour');
add(6, 'minute');


Ответы (1 шт):

Автор решения: Sergey K.

Для такой ситуации лучше использовать enum'ы или константы. Создать что-то наподобие

const TimeUnit= Object.freeze({
    HOUR:   Symbol("hour"),
    MINUTE:  Symbol("minute"),
    SECOND: Symbol("second")
});

Далее, создать функцию, которая использует простейший switch-case

function addTime(dt, value, timeUnit) {
  switch(timeUnit){
    case TimeUnit.HOUR: // здесь прибавляйте часы
     break;
    case TimeUnit.MINUTE: // здесь прибавляйте минуты
    break;
    case TimeUnit.SECOND: // здесь прибавляйте секунды
    break;
    // И далее по списку делайте что желаете с получаемым объектом.

  }
}
→ Ссылка