Dùng calendar.monthrange(year, month) trả về tuple: (weekday của ngày 1, số ngày trong tháng).
Ví dụ
import calendar day, num_days = calendar.monthrange(2017, 12) last_week = num_days % 7 last_day = (day + last_week) % 7 print(last_day)
Kết quả
0
Giải thích: Ngày 0-6 bắt đầu từ Sunday. Kết quả 0 = Sunday.
Cách đơn giản hơn: Lấy date object cuối tháng
from datetime import date, timedelta
def last_day_of_month(year, month):
if month == 12:
next_month = date(year + 1, 1, 1)
else:
next_month = date(year, month + 1, 1)
return next_month - timedelta(days=1)
print(last_day_of_month(2017, 12)) # 2017-12-31