Добавьте дни, но пропустите выходные

#javascript #getdate

Вопрос:

У меня есть небольшая проблема. У меня есть рабочий код для добавления дней в зависимости от текущего времени (если это до 10 утра, он добавляет 1 день, если после 10 утра, он добавляет 2 дня для даты). Итак, вот мой вопрос: как я могу отредактировать код, чтобы он пропускал выходные в расчетах? Например, если я выполню его до 10 утра в пятницу, он должен показать мне дату понедельника, а не субботу или воскресенье.

 function onGetMultiValue() {
    var dzis    = new Date();
    var Godzina = new Date().getHours();
    var teraz   = dzis.getDate();
    
    if (Godzina < 10) {
        dzis.setDate(dzis.getDate()   1);
    } else {
        dzis.setDate(dzis.getDate()   2);
    }
    
    var day   = dzis.getDate();
    var month = dzis.getMonth()   1;
    var year  = dzis.getFullYear();
    var praca = day "." month "." year;

    return praca;
}
 

Комментарии:

1. Несколько советов для вас: Используйте английское название переменных. Использовать польский (или другие языки) — плохая практика. Используйте const и let вместо var синтаксиса. Более подробная информация об этом здесь: freecodecamp.org/news/var-let-and-const-whats-the-difference А также вы можете использовать что-то вроде этого: const work = `${day}.${month}.${year}` ;

2. @Kordrad «Использовать польский (или другие языки) — плохая практика» — почему?

3. @evolutionxbox, потому что, если другие разработчики посмотрят на ваш код, они поймут, что означает название переменных. Конечно, если вы создадите проект только для польских клиентов, никто не будет сердиться за то, что вы пишете по-польски. Но для более четкого кода просто используйте английские имена.

Ответ №1:

Вы можете использовать getDay (), чтобы проверить, какой сегодня день недели.

 function onGetMultiValue() {
  const today     = new Date();
  const hour      = new Date().getHours();
  const dayOfWeek = today.getDay();
   
  if (dayOfWeek == 5) {
    // if it's Friday add 3 days to the date
    today.setDate(today.getDate()   3);
  }

  today.setDate(today.getDate()   hour < 10 ? 1 : 2)  

  const day   = today.getDate();
  const month = today.getMonth()   1;
  const year  = today.getFullYear();

  return `${day}.${month}.${year}`;
}

console.log(onGetMultiValue()) 

Комментарии:

1. У меня все еще есть один вопрос. Что делать, если код будет выполнен в четверг после 10 утра, он добавит два дня, так что окончательная дата будет в субботу? Если да , то как это предотвратить ?

2. добавьте конкретное условие if (dayOfWeek == 4) , не добавляйте два дня