본문 바로가기
Python Code

Python의 timedelta 사용법, 두 날짜 차이를 계산

by quantWhale 2024. 3. 30.
반응형

Python의 datetime 모듈은 날짜와 시간을 다루는 데 필수적인 기능을 제공합니다.

특히, timedelta 클래스는 두 날짜나 시간 사이의 차이를 표현할 때 매우 유용합니다.

이 글에서는 timedelta의 사용법과 다양한 속성과 함께 그 활용 방법을 실제 예제를 통해 어떻게 날짜 계산을 수행할 수 있는지 알아보겠습니다.

 

timedelta란?

timedelta 객체는 두 날짜 또는 시간 사이의 차이를 나타내는 데 사용되며, 일(days), 초(seconds), 마이크로초(microseconds) 등 다양한 시간 단위로 이루어져 있습니다. 

 

예를 들어, 두 날짜 차이의 계산을 한다는 것은 timedelta 객체로 자동변환되어
특정 프로젝트의 시작일과 종료일 사이의 기간을 계산하거나, 특정 이벤트까지 남은 시간을 계산하는 데 사용할 수 있습니다.

from datetime import datetime

def calculate_trade_volume_ratio(stock_code, start_date_str, end_date_str):
    start_date = datetime.strptime(start_date_str, "%Y-%m-%d")
    end_date = datetime.strptime(end_date_str, "%Y-%m-%d")
    
    # 전달받은 날짜의 기간을 계산하여 반환
    period = end_date - start_date
    
    return period.days  # 날짜 수를 반환

# 예시 실행
calculate_trade_volume_ratio('SomeStockCode', '2019-01-01', '2019-01-30')

 

위 코드에서 함수를 호출할 때에는 문자열 형식의 날짜를 전달하지만 함수 내에서는 start_date와 end_date는 datetime 타입의 객체로 가정하고 있습니다.

datetime 라이브러리를 사용하면 특정 날짜를 datetime 객체로 표현할 수 있으며, 이러한 객체들 사이의 차이를 계산하여 timedelta 객체를 얻을 수 있습니다.

 

period = end_date - start_date 이 부분은 end_date에서 start_date를 빼서 두 날짜 사이의 기간을 timedelta 객체로 반환합니다.

timedelta 객체는 기간을 일, 초, 마이크로초 단위로 표현합니다.

return period.days는 이 timedelta 객체에서 일(day) 단위의 값을 반환합니다.

따라서, 전달받은 두 날짜 사이의 총 일수를 얻을 수 있게 됩니다. 예를 들어, 2019-01-01과 2019-01-30 사이의 기간을 계산하면, 결과는 29일이 됩니다. 이는 시작일을 포함하지 않고 종료일까지의 전체 일수를 나타냅니다. (주말 포함)

 

그럼 세부적으로 timedelta의 속성과 예시에 대해 알아보도록 하겠습니다.

 

timedelta의 주요 속성

  • timedelta 객체는 주로 다음과 같은 속성을 포함하고 있습니다
  • days: 일 수를 나타냅니다. 최대치나 최소치에 제한이 없으며, 음수 값도 가질 수 있습니다.
  • seconds: 일(day) 단위를 제외한 시간을 초(second) 단위로 나타냅니다.
    값의 범위는 0부터 86399(23시간 59분 59초)까지입니다.
  • microseconds: 마이크로초 단위의 시간을 나타냅니다. 값의 범위는 0부터 999999까지입니다.

 

timedelta 객체 생성하기

timedelta 객체는 datetime 모듈의 일부로, 다음과 같이 다양한 시간 단위를 이용하여 생성할 수 있습니다:

from datetime import timedelta

# 예제 timedelta 객체 생성
example_timedelta = timedelta(days=5, seconds=3600, microseconds=100000)

print(f"일: {example_timedelta.days}")
print(f"초: {example_timedelta.seconds}")
print(f"마이크로초: {example_timedelta.microseconds}")

 

 

timedelta를 활용한 날짜 계산

timedelta는 날짜 계산에 유용하게 사용됩니다.

예를 들어, 특정 날짜에서 일정 기간을 더하거나 빼는 계산이 가능합니다:

from datetime import datetime, timedelta

# 현재 날짜 및 시간
now = datetime.now()

# 10일 후와 3시간 전 계산
ten_days_later = now + timedelta(days=10)
three_hours_ago = now - timedelta(hours=3)

print(f"현재: {now}")
print(f"10일 후: {ten_days_later}")
print(f"3시간 전: {three_hours_ago}")

 

timedelta의 활용 예시

timedelta 객체는 두 날짜 사이의 차이를 계산하거나 특정 기간을 나타낼 때 유용합니다.

예를 들어, 프로젝트의 예상 기간을 계산하거나, 미래의 특정 이벤트까지 남은 시간을 확인하는 데 사용할 수 있습니다.

 

timedelta의 추가 속성: total_seconds()

total_seconds(): timedelta 객체가 나타내는 전체 기간을 초 단위로 반환합니다.

이 메소드는 일, 시, 분, 초, 마이크로초를 모두 초 단위로 환산하여 반환합니다.

from datetime import timedelta

duration = timedelta(days=1, hours=2, minutes=30)
print(f"총 초: {duration.total_seconds()}")

 

결론

timedelta는 Python에서 날짜와 시간을 다룰 때 매우 유용한 클래스입니다. timedelta의 다양한 속성과 메소드를 이해하고 활용함으로써, 복잡한 날짜 계산도 쉽게 해결할 수 있습니다.

 

이 글을 통해 timedelta의 다양한 속성과 활용 방법에 대해 자세히 알아보았습니다.

timedelta를 활용한 날짜 및 시간 계산 기법을 잘 이해하고 활용하면, Python 프로그래밍에 있어서 보다 효율적으로 작업할 수 있을 것이라 생각합니다.

 

감사합니다.

반응형
-

댓글