안녕하세요. 지꿀입니다 🙂
오늘은 파이썬으로 날짜 혹은 시간 등 시점에 대한 데이터를 다룰 때 특정 시점에서 특정 일수 혹은 시간을 더하고 빼는 방법에 대해 포스팅하려고 합니다. 예를 들면 오늘로부터 한 시간 후, 일주일 후, 한 달 후 등의 시점을 구할 수 있어요.
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'
이상으로 특점 시점을 기준으로 기간 혹은 시간을 더하고 빼는 함수에 대해 알아보았습니다. 감사합니다 🙂