본문 바로가기

코딩, 엑셀

파이썬, 월별 시작날짜와 마지막 날짜 구하기


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초를 빼서 이번달의 마지막날을 구한다는 아이디어가 핵심이다. 


Only I can change me life, no one can do it for me. – Carol Burnett