[Python] 기준 날짜 전 또는 후(월/일) 날짜 구하기

업데이트:

개요

jpg

날짜를 다룰때는 단순히 사칙연산을 통해서는 연,월,일에 대한 연산이 불가능하다.
따라서 기준날짜에 대한 연산이 필요할 때는 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'

댓글남기기