[Python] 기준 날짜 전 또는 후(월/일) 날짜 구하기
업데이트:
개요
날짜를 다룰때는 단순히 사칙연산을 통해서는 연,월,일에 대한 연산이 불가능하다.
따라서 기준날짜에 대한 연산이 필요할 때는 dateutil.relativedelta
모듈의 relativedelta
함수를 이용하면 쉽게 가능하다.
기준 날짜 월(month) 연산
- 2019년 10월 10일의 4개월 전/후 날짜 구하기
from datetime import datetime
from dateutil.relativedelta import relativedelta
my_date = datetime(2019,10,10)
new_date1 = my_date + relativedelta(months=4)
new_date2 = my_date + relativedelta(months=-4)
print(str(new_date1.date()))
print(str(new_date2.date()))
[Output]
2020-02-10
2019-06-10
기준 날짜 일(Day) 연산
- 2019년 10월 10일의 100일 전/후 날짜 구하기
my_date = datetime(2019,10,10)
new_date1 = my_date + relativedelta(days=100)
new_date2 = my_date + relativedelta(days=-100)
print(str(new_date1.date()))
print(str(new_date2.date()))
[Output]
2020-01-18
2019-07-02
함수 정의
# input / output : 'yyyymm' or 'yyyymmdd' 형태
def get_date(current, value, opt='month'):
year = int(current[:4])
month = int(current[4:6])
day = int(current[6:]) if current[6:] else 1
if opt=='month':
delta = datetime(year,month,day) + relativedelta(months=value)
new_date = str(delta.year) + str(delta.month).zfill(2)
elif opt=='day':
delta = datetime(year,month,day) + relativedelta(days=value)
new_date = ''.join(str(delta.date()).split("-"))
return new_date
예시
get_date('201906',7, opt='month') # 7개월 후
'202001'
get_date('201906',-10, opt='month') # 10개월 전
'201808'
get_date('20191102',40, opt='day') # 40일 후
'20191212'
get_date('20191102',-30, opt='day') # 25일 전
'20191008'
댓글남기기