In [1]:
import datetime
import calendar

In [2]:
print(calendar.monthrange(2019, 1))


(1, 31)

In [3]:
print(calendar.monthrange(2019, 1)[1])


31

In [4]:
def get_last_date(dt):
    return dt.replace(day=calendar.monthrange(dt.year, dt.month)[1])

In [5]:
dt = datetime.datetime(2019, 1, 10, 10, 10, 10)
print(dt)


2019-01-10 10:10:10

In [6]:
print(get_last_date(dt))


2019-01-31 10:10:10

In [7]:
d = datetime.date(2019, 1, 10)
print(d)


2019-01-10

In [8]:
print(get_last_date(d))


2019-01-31

In [9]:
print(datetime.date.today())


2019-07-29

In [10]:
print(get_last_date(datetime.date.today()))


2019-07-31

In [11]:
def get_last_date2(year, month):
    return datetime.date(year, month, calendar.monthrange(year, month)[1])

In [12]:
print(get_last_date2(2019, 1))


2019-01-31