calendar.диапазон месяцев(год, месяц) Возвращает день недели первого числа месяца и количество дней в месяце для указанных года и месяца.
>>> import calendar >>> calendar.monthrange(2002, 1) (1, 31) >>> calendar.monthrange(2008, 2) # leap years are handled correctly (4, 29) >>> calendar.monthrange(2100, 2) # years divisible by 100 but not 400 aren't leap years (0, 28)
итак:
calendar.monthrange(year, month)[1]
кажется, это самый простой способ.
Ответ 2
Если вы не хотите импортировать calendar модуль, простая двухэтапная функция также может быть:
import datetime
deflast_day_of_month(any_day): # The day 28 exists in every month. 4 days later, it's always next month next_month = any_day.replace(day=28) + datetime.timedelta(days=4) # subtracting the number of the current day brings us back one month return next_month - datetime.timedelta(days=next_month.day)