# 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
'Python' 카테고리의 다른 글
[Pandas] 데이터 필터링: isin vs contains (0) | 2024.11.18 |
---|---|
[Pandas] 날짜/시간 데이터 처리하기(to_datetime(), .dt, to_period) (0) | 2024.11.18 |
[Pandas] 데이터프레임의 행/열/데이터 개수 세기 (0) | 2024.11.18 |
[Python] enumerate() (4) | 2024.11.14 |
[Pandas] apply lambda 식으로 데이터 가공하기 (0) | 2024.02.19 |