Похоже, что вы можете получить все дни из Calendar.itermonthdays4()
и отфильтровать их по дням и месяцам. Затем просто индексируйте второй до последнего с помощью [-2]
import calendar
c = calendar.Calendar()
year = 2020
day = 1
for month in range(1, 13):
secondLastTues = list(filter(lambda d:d[3] == day and d[1] == month,
c.itermonthdays4(year, month)))[-2]
print(secondLastTues)
Результат:
(2020, 1, 21, 1)
(2020, 2, 18, 1)
(2020, 3, 24, 1)
(2020, 4, 21, 1)
(2020, 5, 19, 1)
(2020, 6, 23, 1)
(2020, 7, 21, 1)
(2020, 8, 18, 1)
(2020, 9, 22, 1)
(2020, 10, 20, 1)
(2020, 11, 17, 1)
(2020, 12, 22, 1)