[Python] 파이썬에서 두 날짜를 비교, 차이 계산하는 방법 (datetime)

프로그래밍을 하다 보면 두 개의 날짜를 비교해야 하는 경우들이 종종 생기게 됩니다. 파이썬에서는 주로 datetime 모듈을 사용하여 두 날짜를 비교하게 되는데요. 이번 포스팅에서는 두 개의 날짜를 비교하는 방법에 대해 알아보도록 하겠습니다.

 

 파이썬에서 두 날짜를 비교하는 방법 

오늘 날짜와 특정 날짜의 비교

from datetime import datetime

today = datetime.today()
d_day = datetime(2020, 1, 1)

if today < d_day:
    print("오늘은 지정된 날짜보다 이전입니다.")
elif today > d_day:
    print("오늘은 지정된 날짜보다 이후입니다.")
else:
    print("오늘과 지정된 날짜가 같습니다.")

아마 빈도수가 가장 높은 것은 특정 날짜와 현재 날짜와의 비교일 것입니다. 파이썬에서 현재 날짜를 얻으려면 datetime.today() 또는 datetime.now() 함수를 사용할 수 있고 두 개의 날짜를 비교하는 방법은 < > 같은 비교 연산자를 사용해 주시면 됩니다.

 


 

 

 두 날짜의 차이 계산하는 방법 

두 개의 날짜의 차이를 알아야 하는 경우도 있을 수 있겠죠. 두 날짜의 차이를 알려면 datetime 객체로 두 날짜를 맞춰준 뒤 - 마이너스 연산자로 계산해 주면 됩니다.

from datetime import datetime

today = datetime.today() # 현재날짜
d_day = datetime(2020, 1, 1) # 비교할 날짜(2020.1.1)

diff = today - d_day
print("날짜 차이 :", diff)
print("일 수 차이 :", diff.days) # 일 수 차이
print("마이크로초 차이 :", diff.microseconds) # 마이크로초 차이
print("초 차이 :", diff.seconds)# 초 차이
print("분 차이 :", diff.seconds / 60)# 분 차이
print("시간 차이 :", diff.seconds / 3600) # 시간 차이

  • days: 두 날짜 사이의 일 수 차이를 반환합니다.
  • microseconds: 마이크로초 단위로 두 날짜 사이의 마이크로초 차이를 반환합니다.
  • seconds: 초 단위로 두 날짜 사이의 초 차이를 반환합니다.
  • total_seconds(): 전체 시간 차이를 초 단위로 반환합니다. (일, 시간, 분, 초, 마이크로초를 모두 포함합니다.)

두 날짜의 차이를 확인하는 방법은 위와 같습니다. 다만 분, 시간의 차이는 바로 구할 수 있는 메서드가 없기 때문에 위의 예제처럼 / 나누기 연산과정을 통해 분과, 시간으로 치환하는 과정은 필요합니다. 

 


 

 날짜 문자열을 datetime 객체로 변환하여 비교, 계산하기 

파이썬의 특성상 크롤링을 하거나 하면 날짜 정보가 문자열로 들어오게 됩니다. 문자열은 비교 정확성이 떨어지기 때문에 이럴 때는 datetime.strptime() 함수를 사용하여 문자열을 datetime 객체로 변환한 뒤 두 날짜를 비교해 주시면 되겠습니다.

 

from datetime import datetime

# 두 개의 날짜 문자열
date_str1 = "2023-12-27"
date_str2 = "2023-10-15"

# 문자열을 datetime 객체로 변환
date1 = datetime.strptime(date_str1, "%Y-%m-%d")
date2 = datetime.strptime(date_str2, "%Y-%m-%d")

# 두 datetime 객체를 비교
diff_date = date1 - date2
print(f"두 날짜의 차이는 {diff_date}입니다.")

if date1 < date2:
    print(f"{date_str1}는 {date_str2}보다 이른 날짜입니다.")
elif date1 > date2:
    print(f"{date_str1}는 {date_str2}보다 늦은 날짜입니다.")
else:
    print(f"{date_str1}와 {date_str2}는 같은 날짜입니다.")

위의 예제를 보시면 먼저 문자열로 되어 있는 날짜를 datetime.strptime 메서드를 사용하여 datetime 객체로 변환하고, 그 후에 비교, 연산 작업을 하는 것을 보실 수 있습니다. 참고로 strptime 함수의 두 번째 매개변수로는 입력한 문자열의 형식을 지정해야 합니다. 위의 예제에서는 "YYYY-MM-DD" 형식을 사용하였습니다. 날짜 문자열의 형식과 strptime 함수의 형식 문자열을 맞추어 주어야 날짜 계산 오류를 방지할 수 있습니다.

댓글

Designed by JB FACTORY