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

파이썬에서 날짜와 시간 계산하는 방법: timedelta 객체 활용법

파이썬에서는 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 하나만 잘 활용해도 날짜·시간 관련 대부분의 산술 연산을 깔끔하게 처리할 수 있습니다.