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

Python에서 시간 차이(시차)를 계산하는 방법 – timedelta 활용법 총정리

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는 단순히 시간을 더하고 빼는 용도뿐 아니라, 두 시점 간의 경과 시간을 측정하는 데에도 유용하게 활용됩니다.