2019년 1월부터 12월까지, 매달 첫째날과 마지막날을 구해야 한다고 가정해보자. 1월은 20190101, 20190131 이 될 것이고, 2월은 20190201, 20190228이 될 것이다. 이렇게 월마다 달라지는 마지막날을 계산해서 구하는 것이 포인트 이다.
from datetime import datetime
from datetime import timedelta
from dateutil import relativedelta
# 시작날짜
yyyymmdd = datetime(2019, 1, 1, 0, 0, 0)
for i in range(12):
# 한달뒤의 첫날을 구한다
yyyymmdd = yyyymmdd + relativedelta.relativedelta(months=1)
# 다음달 첫날에서 1초를 빼서 이번달 마지막날을 만든다
thismonth_lastday = yyyymmdd - timedelta(seconds=1)
# 이번달 마지막날 date에서 년월만 가져와서 "01" 을 덧붙여 yyyymmdd를 만든다
startday_thismonth = thismonth_lastday.strftime('%Y%m')+"01"
# 이번달 마지막날 date에서 ymd를 모두 가져온다
lastday_thismonth = thismonth_lastday.strftime('%Y%m%d')
# 월별 첫날과 마지막날을 프린트 한다
print(startday_thismonth, lastday_thismonth)
위의 코드로 간단하게 이를 구현할 수 있는데, 다음달을 첫날에서 1초를 빼서 이번달의 마지막날을 구한다는 아이디어가 핵심이다.