Python에서 두 datetime 객체 사이에 24시간(1일)이 지났는지 확인하려면 간단한 날짜 연산이 필요합니다. 핵심 원리는 다음과 같습니다.
기본 원리
두 datetime 객체를 서로 빼면 그 차이가 timedelta 객체로 반환됩니다. 이 timedelta 객체는 정수(int)와 직접 비교할 수 없으므로, 먼저 초 단위 값을 추출한 뒤 숫자와 비교하거나, 다른 timedelta 객체와 비교해야 합니다.
24시간은 86400초에 해당합니다. 따라서 total_seconds() 메서드를 사용해 경과 시간을 초 단위로 변환한 후 비교하는 방식을 사용할 수 있습니다.
예제 코드
from datetime import datetime
NUMBER_OF_SECONDS = 86400 # 24시간 = 86400초
first = datetime(2017, 10, 10)
second = datetime(2017, 10, 12)
if (second - first).total_seconds() > NUMBER_OF_SECONDS:
print("하루 이상 지났습니다!")
실행 결과
하루 이상 지났습니다!
위 예제에서 두 날짜의 차이가 2일이므로 조건문이 참이 되어 메시지가 출력됩니다.
더 간결한 방법: timedelta 객체끼리 비교하기
timedelta 객체는 서로 직접 비교할 수 있으므로, 초 단위 변환 없이 아래처럼 작성하는 것이 더 파이썬답고 가독성도 좋습니다.
from datetime import datetime, timedelta
first = datetime(2017, 10, 10)
second = datetime(2017, 10, 12)
if second - first > timedelta(days=1):
print("하루 이상 지났습니다!")
정리
두 날짜·시간의 차이를 구하고(datetime끼리 뺄셈), 결과인 timedelta를 total_seconds()로 변환해 86400초와 비교하거나, timedelta(days=1)와 직접 비교하면 24시간 경과 여부를 손쉽게 확인할 수 있습니다.