본문 바로가기
프로그래밍/[Python] 파이썬

[Python] timedelta와 relativedelta의 시간 계산 차이점

by GenieIT* 2025. 1. 7.
728x90
반응형
728x90
반응형

 

1. timedelta (datetime 모듈의 일부)

timedelta는 고정된 시간 단위를 기준으로 날짜와 시간을 계산합니다. 일(day), 초(second), 분(minute), 시간(hour), 주(week) 등의 고정된 시간 단위로 연산할 때 사용됩니다.

 

주요 특징

  • 정확한 시간 간격을 계산할 때 적합.
  • 달(month)이나 연(year)과 같은 가변적 단위를 지원하지 않음.
  • 예를 들어, 하루는 항상 24시간, 1주일은 항상 7일로 고정되어 있습니다.

 

사용 예제

from datetime import datetime, timedelta

now = datetime.now()

# 10일 더하기
future_date = now + timedelta(days=10)
print("10일 뒤:", future_date)

# 2시간 빼기
past_time = now - timedelta(hours=2)
print("2시간 전:", past_time)

'''
실행 결과
10일 뒤: 2025-01-17 11:50:31.568739
2시간 전: 2025-01-07 09:50:31.568739
'''

 


 

2. relativedelta (dateutil 모듈의 일부)

relativedelta는 사람 친화적인 단위를 기준으로 날짜와 시간을 계산합니다. 특히, 달(month)과 연(year)처럼 가변적인 단위를 처리할 수 있습니다. 예를 들어, 어떤 달은 28일, 30일, 또는 31일이므로 이런 경우 relativedelta를 사용하는 것이 적합합니다.

 

주요 특징

  • 가변적인 시간 단위(년, 월, 일)를 지원.
  • 날짜를 자동으로 조정하여 올바른 결과를 반환.
  • 특정 날짜와 시간을 정확히 조정할 수 있음(예: 특정 요일로 이동).

 

사용 예제

from datetime import datetime
from dateutil.relativedelta import relativedelta

now = datetime.now()

# 1달 더하기 (달의 일수에 따라 달라질 수 있음)
next_month = now + relativedelta(months=1)
print("1달 뒤:", next_month)

# 1년 2달 빼기
past_date = now - relativedelta(years=1, months=2)
print("1년 2달 전:", past_date)

# 특정 요일로 이동 (다음 금요일)
next_friday = now + relativedelta(weekday=4)  # 0=월요일, 4=금요일
print("다음 금요일:", next_friday)

'''
실행 결과
1달 뒤: 2025-02-07 11:59:17.877224
1년 2달 전: 2023-11-07 11:59:17.877224
다음 금요일: 2025-01-10 11:59:17.877224
'''

 


 

3. timedelta와 relativedelta의 차이점

특징 timedelta relativedelta
지원 단위 고정된 시간 단위 (일, 초, 시간 등) 가변적인 시간 단위 (년, 월 등 포함)
가변 날짜 처리 지원하지 않음 (예: 1달 = 항상 30일로 계산) 지원 (예: 1달 뒤를 올바른 날짜로 계산)
복잡한 연산 간단한 연산에 적합 사람 친화적인 계산에 적합
의존 모듈 datetime 모듈 기본 제공 dateutil 패키지 설치 필요

 


 

4. 요약하기

  • 고정된 시간 단위로 계산할 경우: timedelta가 적합.
    • 예: "정확히 10일 뒤", "48시간 뒤" 등의 계산.
  • 가변적인 시간 단위로 계산할 경우: relativedelta가 적합.
    • 예: "1달 뒤", "다음 금요일" 등의 계산.

 


 

 

 

 

 

728x90
반응형