cannibal_corpse
@cannibal_corpse
Верстальщик руками

Сгенерировать даты по неделям?

Приветствую!
Нужно сгенерировать 4 кнопки;
В каждой кнопке Дата начала недели и Дата конца недели.
Как быть, если неделя начинается, например с Пятницы и заканчивается в Воскресенье?
Надо чтобы в элементе была дата "01.03.2021 - 03.03.2021".
Скриншот примера
602d2f26268a6133135517.jpeg
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 2
Simkav
@Simkav
date-fns
Хорошая либа для работы с датами, есть методы для нахождения конца недели , нужно будет только выбрать из даты D-M-Y
Ответ написан
Seasle
@Seasle Куратор тега JavaScript
\( ゚ヮ゚)/
const today = new Date();

const getWeeks = (month, year) => {
  const date = new Date(year, month + 1, 0, 0, 0, 0);
  const weeks = [];
  const days = date.getDate();
  let startWeek = null;
  
  for (let day = 1; day <= days; day++) {
    date.setDate(day);
    
    const weekDay = date.getDay();
    if (weekDay > 0 && startWeek === null) {
      startWeek = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
    }
    
    if (weekDay === 0 || day === days) {
      weeks.push({
        start: startWeek,
        end: new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0)
      });
      startWeek = null;
    }
  }
  
  return weeks;
};

console.log(JSON.stringify(getWeeks(1, 2021), null, 4));
/*
У меня UTC+6, поэтому в датах 6 вечера.
[
    {
        "start": "2021-01-31T18:00:00.000Z",
        "end": "2021-02-06T18:00:00.000Z"
    },
    {
        "start": "2021-02-07T18:00:00.000Z",
        "end": "2021-02-13T18:00:00.000Z"
    },
    {
        "start": "2021-02-14T18:00:00.000Z",
        "end": "2021-02-20T18:00:00.000Z"
    },
    {
        "start": "2021-02-21T18:00:00.000Z",
        "end": "2021-02-27T18:00:00.000Z"
    }
]
*/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
XPOWER Одесса
от 3 000 до 5 500 $
07 мар. 2021, в 18:25
35000 руб./за проект
07 мар. 2021, в 18:22
5000 руб./за проект
07 мар. 2021, в 17:45
9000 руб./за проект