파이썬에서는 timedelta 객체를 사용하면 날짜와 시간 연산을 아주 쉽게 처리할 수 있습니다. 특정 날짜나 시간에 기간을 더하거나 뺄 때는 datetime.datetime() 객체를 만든 뒤, 여기에 datetime.timedelta() 인스턴스를 더하거나 빼면 됩니다.
timedelta 객체는 '기간(duration)', 즉 두 날짜 또는 두 시각 사이의 차이를 나타냅니다. 생성자의 함수 시그니처는 다음과 같습니다.
datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
timedelta의 주요 특징
- 모든 인자는 선택 사항이며, 기본값은 0입니다.
- 인자로 정수(int), long, 실수(float)를 사용할 수 있습니다.
- 양수와 음수 모두 허용되므로 과거/미래 방향의 계산이 자유롭습니다.
더 자세한 내용은 공식 문서에서 확인할 수 있습니다 — https://docs.python.org/3/library/datetime.html#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 객체에 오프셋(시간 차이)을 더하거나 빼야 한다면, datetime.datetime.combine()으로 datetime 인스턴스를 만들어 계산을 수행한 후, .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'>
결과가 음수로 표시될 때 파이썬은 '-1 day' 형태로 출력합니다. 이는 timedelta가 항상 양수 기간으로 정규화되어 표현되기 때문입니다. 이처럼 timedelta 하나만 잘 활용해도 날짜·시간 관련 대부분의 산술 연산을 깔끔하게 처리할 수 있습니다.