오늘 날짜 또는 특정 날짜를 기준을 "전 주" 또는 "전 달"의 시작, 끝 날짜를 구해야하는 경우가 있습니다.
예를 들면 매주 월요일에 전 주의 데이터를 가져와서 계산을 한다거나 등의 경우에 말이죠.
이 때 사용할 수 있는 몇 가지 경우의 코드를 작성해보았습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import datetime from dateutil.relativedelta import relativedelta the_date = datetime.date.today() # the_date = datetime.date(2024, 2, 1) ## 실행일 기준 지난주 월요일과 일요일 날짜 구하기 # 지난주 월요일, 일요일 last_monday = the_date - datetime.timedelta(days=the_date.weekday() + 7) last_sunday = the_date - datetime.timedelta(days=the_date.weekday() + 1) print(last_monday.strftime('%Y-%m-%d')) print(last_sunday.strftime('%Y-%m-%d')) ## 실행일 기준 지난달 1일과 말일 날짜 구하기 this_month_first_day = datetime.date(the_date.year, the_date.month, 1) # 지난달 첫날, 마지막날 last_month_first_day = this_month_first_day - relativedelta(months=1) last_month_last_day = this_month_first_day - relativedelta(days=1) print(last_month_first_day.strftime('%Y-%m-%d')) print(last_month_last_day.strftime('%Y-%m-%d')) ## 실행일 기준 지난 분기 첫날과 마지막 날짜 구하기 this_quarter_first_day = datetime.date(the_date.year, the_date.month - ((the_date.month - 1) % 3), 1) # 지난 분기 첫날, 마지막날 last_quarter_first_day = this_quarter_first_day - relativedelta(months=3) last_quarter_last_day = this_quarter_first_day - relativedelta(days=1) print(last_quarter_first_day.strftime('%Y-%m-%d')) print(last_quarter_last_day.strftime('%Y-%m-%d')) ## 실행일 기준 전전월 1일과 말일 날짜 구하기 two_month_ago_first_day = this_month_first_day - relativedelta(months=2) two_month_ago_last_day = this_month_first_day - relativedelta(days=1, months=1) print(two_month_ago_first_day.strftime('%Y-%m-%d')) print(two_month_ago_last_day.strftime('%Y-%m-%d')) | cs |
[참고 자료]
https://walkingfox.tistory.com/109
'분석 > 파이썬 Python' 카테고리의 다른 글
앙상블 학습에서 Voting (1) | 2024.08.28 |
---|---|
Python : 문자열안의 특정 부분을 변수치환 (1) | 2024.04.18 |
Python : 순열검정 (비모수) (0) | 2024.01.27 |
Python : 위도.경도로 TimeZone 구하기 (0) | 2020.03.10 |
python : pd.to_numeric() VS astype(np.float64) (1) | 2019.11.27 |