from datetime import date def check_week_day(day_date): if day_date.weekday() == 5 or day_date.weekday() == 6: return 1 else: return 0 def check(start_date, end_date): tmp_date = start_date res = 0 days_counter = 1 month_counter = 1 year_counter = 1 while tmp_date != end_date: try: tmp_date = date(tmp_date.year, tmp_date.month, tmp_date.day + days_counter) res += check_week_day(tmp_date) except ValueError: try: tmp_date = date(tmp_date.year, tmp_date.month + month_counter, days_counter - tmp_date.day) res += check_week_day(tmp_date) except ValueError: tmp_date = date(some_date.year, some_date.month, some_date.day) res += check_week_day(tmp_date) days_counter += 1 return res
Вот такой стремный код. Он не работает при определенных условиях. Если разница в датах больше года, то вываливается ошибка на 25 строке “Day of the month range”.
Почему он ругается понятно, как мне модифицировать код, чтобы работало?
Пробовал по другому решать, но вот уперся я в такой метод и других решений не вижу.