Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 날짜와 시간에 산술 연산을 수행하는 방법 (timedelta 활용법)

Python에서는 timedelta 객체를 사용하면 날짜와 시간 계산을 아주 쉽게 처리할 수 있습니다. 특정 날짜나 시간에 기간을 더하거나 뺄 때는 먼저 datetime.datetime() 객체를 만든 뒤, 여기에 datetime.timedelta() 인스턴스를 더하거나 빼면 됩니다.

timedelta 객체는 '기간(duration)', 즉 두 날짜 또는 두 시각 사이의 차이를 나타냅니다. 생성자의 함수 시그니처는 다음과 같습니다.

datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

timedelta 사용 시 주의사항

모든 인자는 선택 사항이며 기본값은 0입니다. 인자로는 정수(int), long, 실수(float)를 사용할 수 있고, 양수와 음수 모두 허용됩니다. 자세한 내용은 공식 문서(datetime — timedelta objects)에서 확인할 수 있습니다.

예제: 특정 시간에서 2시간 10분 빼기

다음은 timedelta 객체를 활용해 현재 시간에서 2시간 10분 전의 시각을 구하는 예제입니다.

import datetime

old_time = datetime.datetime.now()
print(old_time)

new_time = old_time - datetime.timedelta(hours=2, minutes=10)
print(new_time)

실행 결과

2018-01-04 11:09:00.694602
2018-01-04 08:59:00.694602

datetime.time 객체에서의 제한과 해결 방법

datetime.time() 객체에는 timedelta 연산이 지원되지 않습니다. 만약 기존 time 객체에 오프셋(시간 차이)을 적용해야 한다면, 다음 순서로 처리하세요.

  1. datetime.datetime.combine()을 사용해 datetime을 합쳐 datetime.datetime 인스턴스를 만듭니다.
  2. 필요한 계산을 수행합니다.
  3. .time() 메서드로 다시 시간(time) 부분만 추출합니다.

두 datetime 객체의 차이 구하기

datetime 객체끼리 빼면 그 결과로 timedelta 객체가 반환됩니다. 이 객체를 이용하면 두 시각 사이의 정확한 차이를 알 수 있습니다.

t1 = datetime.datetime.now()
t2 = datetime.datetime.now()

print(t1 - t2)
print(type(t1 - t2))

실행 결과

-1 day, 23:59:56.653627
<class 'datetime.timedelta'>

위 결과에서 볼 수 있듯이, 두 datetime 객체의 차감 결과 타입은 datetime.timedelta입니다. 이처럼 Python의 timedelta를 활용하면 날짜 더하기·빼기, 두 시점 간 간격 계산 등 다양한 날짜·시간 연산을 손쉽게 구현할 수 있습니다.