[Python] datetime 기간 혹은 시간 더하고 빼기

안녕하세요. 지꿀입니다 🙂
오늘은 파이썬으로 날짜 혹은 시간 등 시점에 대한 데이터를 다룰 때 특정 시점에서 특정 일수 혹은 시간을 더하고 빼는 방법에 대해 포스팅하려고 합니다. 예를 들면 오늘로부터 한 시간 후, 일주일 후, 한 달 후 등의 시점을 구할 수 있어요.

1. timedelta 활용하기

첫번째 방법은 timedelta를 사용하는 방법입니다. 현재 시점의 날짜 및 시간을 now라는 변수에 저장해줄게요.

from datetime import datetime, timedelta

#현재 날짜
now = datetime.now()

now를 콘솔에 찍어보면 아래와 같아요.

현재 시점

timedelta 함수의 parameter 값으로 days, seconds, microseconds, milliseconds, minutes, hours, weeks를 설정할 수 있어요. 그 중 minutes, hours, days, weeks를 활용하여 1분 후, 1시간 후, 1일 후, 1주일 후를 계산해 보겠습니다.

# 1 
after_1minute = now+timedelta(minutes=1)
print(after_1minute.strftime("%Y-%m-%d %H:%M:%S")) #'2024-01-15 17:36:59'

# 1시간 
after_1hour = now+timedelta(hours=1)
print(after_1hour.strftime("%Y-%m-%d %H:%M:%S")) #'2024-01-15 18:35:59'

# 1 
after_1day = now+timedelta(days=1)
print(after_1day.strftime("%Y-%m-%d %H:%M:%S")) #'2024-01-16 17:35:59'

# 1주일 
after_1week = now+timedelta(weeks=1)
print(after_1week.strftime("%Y-%m-%d %H:%M:%S")) #'2024-01-22 17:35:59'

timedelta의 아쉬운 부분은 parameter값에 year, month의 시점을 넣을 수 없다는 것이에요. 이 부분들에 대해서는 dateutil 패키지의 relativedelta를 이용해서 시점을 구해볼게요.

2. dateutil.relativedelta 활용하기

relativedelta 함수의 parameter값으로는 years, months, weeks, hours, minutes, seconds, microseconds을 넣으실 수 있습니다! 활용범위가 timedelta보다 더 넓은 것 같아요.

from dateutil.relativedelta import relativedelta

# 1 
after_1year = now + relativedelta(years=1)
print(after_1year.strftime("%Y-%m-%d %H:%M:%S")) #'2025-01-15 17:35:59'

# 1 
after_1month = now + relativedelta(months=1)
print(after_1month.strftime("%Y-%m-%d %H:%M:%S")) #'2024-02-15 17:35:59'

이상으로 특점 시점을 기준으로 기간 혹은 시간을 더하고 빼는 함수에 대해 알아보았습니다. 감사합니다 🙂

Leave a Comment