Milky's note

[Python] timedelta(months=n) 본문

Python/요약 정리

[Python] timedelta(months=n)

밀뿌 2023. 11. 13. 18:56

1. timedelta 모듈로 날짜 연산하기

일반적으로 datetime에 날짜를 연산하고 싶을 때 datetime의 timedelta 모듈을 사용한다.

timedelta 객체는 두 날짜나 시간의 차이인 기간을 나타낸다.

# 필요한 모듈 import
from datetime import datetime, timedelta


target_date = datetime.now() - timedelta(days=3)
print('현재시간 : ', datetime.now())
print('연산 후 : ', target_date)

# datetime format를 YYYY-mm-dd 형태로 나타내고 싶을 때
target_date = (datetime.now() - timedelta(days=3)).strftime('%Y-%m-%d')
print('연산 후 : ', target_date)

 

현재시간 :  2023-11-13 18:44:08.255015
연산 후 :  2023-11-10 18:44:08.255015
연산 후 :  2023-11-10

 

간단한 사용 방법은 위와 같다.

하지만 timedelta는 지원하는 기간이 정해져있다.

이를 보면 Year과 Month는 timedelta로 사용할 수 없는 것을 확인할 수 있다.

timedelta(days=0, 
        seconds=0,
        microseconds=0, 
        milliseconds=0, 
        minutes=0, 
        hours=0, 
        weeks=0)

 

이를 보면 Year과 Month는 timedelta로 사용할 수 없는 것을 확인할 수 있다.

 

2. relativedelta 모듈로 날짜 연산하기(years, months)

timedelta를 사용해서 연산할 수 없는 기간인 year과 month는 relativedelta 라는 모듈을 이용해서 연산할 수 있다.

from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta


target_date = datetime.now() - relativedelta(months=3)
print('현재시간 : ', datetime.now())
print('연산 후 : ', target_date)

# datetime format를 YYYY-mm-dd 형태로 나타내고 싶을 때
target_date = (datetime.now() - relativedelta(years=3)).strftime('%Y-%m-%d')
print('연산 후 : ', target_date)

 

현재시간 :  2023-11-13 18:53:11.166126
연산 후 :  2023-08-13 18:53:11.161911
연산 후 :  2020-11-13
Comments