Python에서는 timedelta 객체를 사용하면 날짜와 시간 연산을 아주 간단하게 처리할 수 있습니다. 특정 날짜나 시간에 값을 더하거나 빼고 싶을 때는 datetime.datetime() 객체를 만든 뒤, 여기에 datetime.timedelta() 인스턴스를 더하거나 빼면 됩니다.
timedelta 객체는 두 날짜 또는 두 시간 사이의 기간(duration), 즉 차이를 나타내는 객체입니다. timedelta 생성자의 함수 시그니처는 다음과 같습니다.
datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
timedelta 생성자의 주요 특징
- 모든 인자는 선택 사항이며, 기본값은 0입니다.
- 인자로 정수(int), long, 실수(float)를 사용할 수 있습니다.
- 양수와 음수 모두 허용됩니다.
자세한 내용은 공식 문서(datetime — Timedelta Objects)에서 확인할 수 있습니다.
예제 1: 현재 시간에서 2시간 10분 빼기
다음은 timedelta 객체와 datetime 객체를 함께 사용하는 기본적인 예제입니다.
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
위 결과에서 볼 수 있듯이, 현재 시간에서 2시간 10분을 뺀 새로운 datetime 객체가 출력됩니다.
time() 객체에서의 주의사항
한 가지 주의할 점은 datetime.time() 객체에는 timedelta 연산이 지원되지 않는다는 것입니다. 기존 time 객체에 오프셋을 적용해야 한다면, 먼저 datetime.datetime.combine() 메서드를 사용해 datetime 객체로 변환한 후 계산을 수행하고, 마지막에 .time() 메서드로 다시 시간만 추출하는 방식을 사용해야 합니다.
예제 2: 두 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.timedelta인 것을 확인할 수 있습니다. 이처럼 timedelta는 단순히 시간을 더하고 빼는 용도뿐 아니라, 두 시점 간의 경과 시간을 측정하는 데에도 유용하게 활용됩니다.