import calendar
import datetime
now = datetime.datetime.now()
print calendar.monthrange(now.year, now.month)[1]
29
>>> from datetime import date
>>> (date(2012, 3, 1) - date(2012, 2, 1)).days
29
(dt.replace(month = dt.month % 12 +1, day = 1)-timedelta(days=1)).day
>>> from calendar import monthrange
>>> monthrange(2011, 2)
(1, 28)
def leap_year(year):
if year % 400 == 0:
return True
if year % 100 == 0:
return False
if year % 4 == 0:
return True
return False
def days_in_month(month, year):
if month in {1, 3, 5, 7, 8, 10, 12}:
return 31
if month == 2:
if leap_year(year):
return 29
return 28
return 30
print(days_in_month(2, 2016)) # 29
>>> from calendar import monthrange
>>> monthrange(2012, 2)
(2, 29)
# First number is the weekday of the first day of the month,
# the second number is the number of days in said month