Это ответ на аналогичный вопрос, который может вам помочь.
Используйте библиотеку даты и времени.
L oop через подмножество дней в августе этого года.
Проверьте, если это четверг.
Python: третья пятница месяца
Вот решение, основанное на одном из ответов в этой теме , Это обобщенное решение, поэтому вы должны иметь возможность выбрать месяц, день недели и номер нужного месяца и получить эту дату.
Примечание. Дни недели индексируются 0, начиная с понедельника. Таким образом, индекс воскресенья равен 6, а индекс понедельника равен 0. Поэтому, когда вы вводите day_of_week в эту функцию, убедитесь, что вы выбираете числа от 0 до 6.
Я по умолчанию выбрал 3-е воскресенье месяца, учитывая год.
import datetime as dt
def get_year_day(year,month=8,day_of_week=6,num_in_month=3):
## set up possible ranges
range_1 = 7*(num_in_month-1)+1
range_2 = 7*num_in_month+1
## loop through possible range in the year and the month
for i in range(range_1,range_2):
date = dt.datetime(year=year,month=month, day=i)
## if we have our weekday we can break
if date.weekday()==day_of_week:
break
return date
for i in range(2015,2021):
print(i,get_year_day(i))
2015 2015-08-16 00:00:00
2016 2016-08-21 00:00:00
2017 2017-08-20 00:00:00
2018 2018-08-19 00:00:00
2019 2019-08-18 00:00:00
2020 2020-08-16 00:00:00