특정 기간을 계산해야 하는데, 해당 월을 기준으로 첫째 날과 마지막 날을 얻어야 할 때,

참 쉬울 것 같으면서도 당황스럽게 했다.

구글링을 해보고 여러가지 방법들을 보았지만, 너무 많은 방법들을 제시해주고,

또 생각보다 코드들이 길어져서, 원하는 방법이 아니었다.

그러다가 깔끔하게 해결 할 수 있는 방법을 찾아 공유한다.

예를 들어 나는 해당 전달의 첫째 날과 마지막 날을 얻고 싶을 때를 가정하고 해본다.

from datetime import date, timedelta

today = date.today()

print(today)

datetime.date(2019, 12, 7)

#해당 달의 첫째날 구하기
first_day = today.replace(day=1)

print(first_day)
datetime.date(2019, 12, 1)

#전달의 마지막 날 구하기
last_day_month_ago = first_day - timedelta(days=1)
print(last_day_month_ago)
datetime.date(2019, 11, 30)

#전달의 첫째 날 구하기
first_day_month_ago = last_day_month_ago.replace(day=1)
print(first_day_month_ago)
datetime.date(2019, 11, 1)

 

이렇게 하면 쉽게 구할 수 있다!! 짱 좋은 방법 :)!!!

추가적으로 형태를 "2019-11-1"이런 형태로 얻고 싶다면

last_day_a_month_ago.strftime('%Y-%m-%d')

이렇게 적어주면 해결!

+ Recent posts