В приведенных ниже примерах d
- это объект datetime.date
.
Чтобы получить «индекс» дня за текущий месяц, используйте
def weekday_index(d):
return (d.day + 6) // 7
Эта формулабудет работать независимо от того, какой день недели на самом деле.Чтобы получить день, который совпадает с тем же днем недели с тем же индексом дня недели в следующем месяце, самый простой способ выглядит так:
d_next = d + datetime.timedelta(weeks=4)
if weekday_index(d_next) < weekday_index(d):
d_next += datetime.timedelta(weeks=1)
При этом используется тот факт, что искомая дата составляет 4 недели или5 недель после d
.