Как я могу получить список определенных дней недели за определенный период времени?

Я создаю календарь, который позволяет пользователям бронировать выходные дни. Сейчас я добавляю функцию повторения, которая похожа на повторение событий в календаре MS Teams.

Я дошел до того, что отсортировал все дни недели. Например, если кто-то хочет, чтобы первые понедельники января были выходными, у меня будет список всех понедельников в выбранном месяце: [[datetime.date(2022, 1, 3), datetime.date(2022, 1, 10), datetime.date(2022, 1, 17), datetime.date(2022, 1, 24), datetime.date(2022, 1, 31), datetime. date(2022, 2, 7), datetime.date(2022, 2, 14), datetime.date(2022, 2, 21), datetime.date(2022, 2, 28), datetime.date(2022, 3, 7), datetime.date(2022, 3, 14), datetime.date(2022, 3, 21), datetime.date(2022, 3, 28)]

Теперь как мне получить понедельники (или любые другие дни недели, выбранные пользователем) и поместить их в новый список, чтобы я мог разместить их в выходных днях?

Например. В приведенном выше списке, если пользователь выбрал, что хочет получить выходной во второй понедельник, я хочу поместить 10 января, 14 февраля и 14 марта в новый список

Вот как я получаю выбранные дни для первой недели:

                if interval == 'months':
                monthly_offs = []
                if month_recur == 'first-week':
                    if mon_mon:
                        sd = datetime.strptime(start_date, "%Y-%m-%d")
                        ed = datetime.strptime(end_date, "%Y-%m-%d")

                        for d_ord in range(sd.toordinal(), ed.toordinal() + 1):
                            d = date.fromordinal(d_ord)
                            if d.weekday() == 0:
                                monthly_offs.append(d)

                        print(monthly_offs)
Вернуться на верх