Python

[Pandas] 날짜/시간의 차이 (timedelta)

주댕이 2024. 11. 18. 23:40

# timedelta

  • timedelta는 파이썬의 datetime 모듈에서 제공하는 클래스 중 하나로, 두 날짜 또는 시간 간의 차이(간격)를 표현하는 데 사용된다.
  • 날짜 및 시간 간의 연산(더하기, 빼기 등)을 수행하거나, 두 시점 간의 간격 정보를 쉽게 다룰 수 있다.

 

# timedelta의 특징

  • 기간(간격) 표현
    • timedelta는 일(day), 초(second), 마이크로초(microsecond) 단위의 간격을 표현한다.
  • 연산 지원
    • 날짜 또는 시간과 더하거나 빼는 연산이 가능하다.
    • 두 날짜 간의 차이를 계산하면 timedelta 객체가 반환됩된다.
  • 단위 변환
    • 내부적으로는 초 단위로 저장되지만, 필요한 경우 days, seconds, microseconds 등으로 값을 추출할 수 있다.

 

# timedelta 생성하기

  • timedelta는 datetime.timedelta()로 생성하며, 다음과 같은 매개변수를 사용할 수 있다:
    • weeks: 주 단위
    • days: 일 단위
    • hours: 시간 단위
    • minutes: 분 단위
    • seconds: 초 단위
    • microseconds: 마이크로초 단위
from datetime import timedelta

delta1 = timedelta(days=3)  # 3일
delta2 = timedelta(hours=2, minutes=30)  # 2시간 30분
delta3 = timedelta(weeks=1)  # 1주 (7일)

print(delta1)  # 결과: 3 days, 0:00:00
print(delta2)  # 결과: 0:02:30:00
print(delta3)  # 결과: 7 days, 0:00:00

 

 

# timedelta와 날짜/시간 연산

## 날짜에 timedelta 더하기/빼기

from datetime import datetime, timedelta

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

# 날짜 연산
three_days_later = now + timedelta(days=3)
two_hours_ago = now - timedelta(hours=2)

print("현재:", now)  # 결과: 현재: 2024-11-18 14:35:49.248829
print("3일 후:", three_days_later)  # 결과: 3일 후: 2024-11-21 14:35:49.248829
print("2시간 전:", two_hours_ago)  # 결과: 2시간 전: 2024-11-18 12:35:49.248829

 

## 두 날짜 간 차이 계산하기

date1 = datetime(2023, 1, 1)
date2 = datetime(2023, 1, 15)

# 날짜 간 차이 계산
delta = date2 - date1

print(delta)           # 결과: 14 days, 0:00:00
print(delta.days)      # 결과: 14
print(delta.total_seconds())  # 결과: 1209600.0 (14일을 초로 변환)

 

## 두 시간 간 차이 계산하기

time1 = datetime(2023, 1, 1, 12, 0, 0)  # 12시
time2 = datetime(2023, 1, 1, 15, 30, 0)  # 15시 30분

# 시간 차이 계산
delta = time2 - time1

print(delta)           # 결과: 3:30:00
print(delta.seconds)   # 결과: 12600 (3시간 30분을 초로 변환)

 

 

# timedelta의 주요 속성

속성 설명 예제
days 간격의 일 수를 변환 delta.days (예: 14)
seconds 간격의 초 단위를 반환 (일을 제외한 남은 초) delta.seconds (예: 0)
microseconds 간격의 마이크로초 단위를 반환 delta.microseconds (예: 0)
total_seconds() 간격을 초 단위로 변환하여 반환 delta.total_seconds() (예: 1209600.0)

 

 

# timedelta 활용하기: 특정 간격 반복 생성하기

# 특정 날짜에서 7일 단위로 반복 생성하기
start_date = datetime(2023, 1, 1)
delta = timedelta(days=7)

for i in range(5):  # 5주 반복
    print(start_date + i * delta)
    
# 결과:
# 2023-01-01
# 2023-01-08
# 2023-01-15
# 2023-01-22
# 2023-01-29

 

728x90