매일 업데이트
2022-11-01 10:21 7 min

파이썬에서 시차를 계산하는 방법

파이썬에서 시간차 계산하기: 시간, 분, 초 단위

파이썬으로 날짜 및 시간 작업을 하다 보면 종종 두 시점 간의 시간차를 계산해야 할 때가 있습니다. 이 가이드에서는 두 타임스탬프 사이의 차이를 시간, 분, 초 단위로 정확하게 산출하는 방법을 상세히 설명합니다.

이 튜토리얼을 마치면 여러분은 다음과 같은 능력을 갖추게 될 것입니다.

  • 파이썬의 강력한 datetime 모듈을 활용하여 날짜 및 시간 데이터를 처리하는 방법
  • timedelta 객체의 개념과 그 유용성 이해
  • 두 타임스탬프 간의 시간 차이를 시간, 분, 초 단위로 정밀하게 계산하는 방법

이제 함께 시작해 봅시다!

파이썬 datetime 모듈 활용법

파이썬에서 날짜 및 시간 관련 작업을 수행하기 위해 핵심 모듈인 datetime을 사용합니다. 이 모듈은 파이썬 표준 라이브러리에 포함되어 있어 별도의 설치 없이 즉시 사용 가능합니다. 다음과 같이 간단하게 가져올 수 있습니다.

import datetime

시간차를 계산하려면 비교할 두 개의 타임스탬프가 필요합니다. 이를 위해 다음 중 하나를 사용할 수 있습니다.

  • 두 개의 날짜 객체
  • 두 개의 시간 객체
  • 날짜와 시간 정보를 모두 포함하는 datetime 객체

날짜 객체 생성 방법

datetime 모듈에서 date 클래스를 가져와 날짜 객체를 생성합니다. 파이썬에서 날짜 객체를 만들 때는 datetime.date(연도, 월, 일) 형식을 사용합니다. 예를 들어, date1 객체를 생성하는 코드는 다음과 같습니다.

from datetime import date
date1 = datetime.date(2022, 3, 27)
print(date1)

# 출력: 2022-03-27

코드를 테스트하려면 온라인 파이썬 컴파일러 또는 로컬 환경에 설치된 파이썬을 활용할 수 있습니다.

출력된 날짜 형식은 YYYY-MM-DD 입니다.

주의사항: 월은 앞에 0이 없는 정수로 표기해야 합니다. 일반적으로 날짜를 표기할 때 월 앞에 0을 추가하는 경우가 있지만, 파이썬에서는 그렇지 않습니다.

예를 들어 6월을 표기할 때는 06이 아닌 6을 사용해야 합니다. 03으로 표기하는 경우, 구문 오류가 발생합니다.

date1 = datetime.date(2022, 03, 27)

print(date1)

# 오류 메시지
File "<ipython-input-12-6eb72084e6ce>", line 1
    date1 = datetime.date(2022,03,27)
                                ^
SyntaxError: invalid token

이제 시간 객체를 생성하는 방법을 살펴보겠습니다.

시간 객체 생성 방법

시간 객체를 생성하려면 time 클래스를 사용합니다. 파이썬에서 시간 객체는 시간, 분, 초, 마이크로초 속성을 지정하여 만들 수 있습니다. 모든 속성은 선택 사항이며, 특정 속성을 지정하지 않으면 기본값으로 0이 설정됩니다.

다음은 time1 객체를 생성하는 코드입니다. 날짜 객체와 마찬가지로 시간 객체도 인쇄하여 형식을 확인할 수 있습니다.

from datetime import time
time1 = datetime.time(13, 27, 45, 4600)
print(time1)

# 출력: 13:27:45.004600

datetime 객체 생성 방법

날짜 객체는 시간 정보가 없고, 시간 객체는 날짜 정보를 담고 있지 않습니다. 하지만 실제로는 날짜와 시간 정보가 모두 필요한 경우가 많습니다. 이런 경우, datetime 클래스를 사용하면 편리합니다.

다음 코드를 통해 datetime 객체를 생성할 수 있습니다.

dt1 = datetime.datetime(2022, 3, 27, 13, 27, 45, 46000)
print(dt1)

# 출력: 2022-03-27 13:27:45.046000

초 속성을 지정하지 않은 dt2 객체를 생성해 봅시다. 보시다시피, 기본값으로 0이 설정됩니다.

dt2 = datetime.datetime(2022, 6, 30, 14, 28)
print(dt2)

# 출력: 2022-06-30 14:28:00

지금까지 파이썬에서 날짜, 시간, datetime으로 타임스탬프를 만드는 방법을 배웠습니다. 이제 두 타임스탬프 간의 차이를 계산하는 방법을 알아볼 차례입니다.

timedelta 객체의 활용

파이썬에서 timedelta는 시간 범위를 나타냅니다. 이는 두 날짜, 시간 또는 datetime 객체 간의 차이를 의미합니다.

두 객체를 더하거나 빼면 timedelta 객체가 생성됩니다. 이 객체에는 시간차 계산에 유용한 다양한 속성과 메서드가 있습니다.

다음은 두 datetime 객체 dt1과 dt2의 차이를 계산하는 예입니다.

dt1 = datetime.datetime(2022, 3, 27, 13, 27, 45, 46000)
dt2 = datetime.datetime(2022, 6, 30, 14, 28)
tdelta = dt2 - dt1
print(tdelta)
print(type(tdelta))

# 출력
95 days, 1:00:14.954000
<class 'datetime.timedelta'>

위 코드에서 tdelta 변수가 dt1과 dt2 사이의 시간차를 저장하고 있음을 알 수 있습니다. 그리고 type() 함수를 사용하여 tdelta의 유형이 timedelta 클래스임을 확인했습니다.

이제 다른 예제를 통해 더 자세히 알아보겠습니다.

두 날짜 사이의 시간차 계산

간단하지만 흥미로운 예시를 통해 시간차 계산을 연습해 보겠습니다.

문제: 현재 날짜(오늘)와 생일 사이의 시간차를 계산합니다.
이를 위해 오늘을 첫 번째 타임스탬프로, 생일을 두 번째 타임스탬프로 설정합니다.

먼저 두 개의 datetime 객체를 생성합니다.

  • 오늘을 나타내는 today 객체
  • 생일을 나타내는 bday 객체

datetime 클래스에는 현재 로컬 날짜와 시간을 반환하는 now() 메서드가 있습니다. 이를 사용하여 today 객체를 얻습니다.

today = datetime.datetime.now()
print(today)

# 출력 예시: 2022-01-22 09:10:18.489538

아래 코드에서 bday를 생일로 설정하면 올해 생일까지 남은 시간을 계산할 수 있습니다.

만약 생일이 지난 후에 이 글을 읽고 있다면, bday를 다음 생일로 설정하세요.

bday = datetime.datetime(2022, 8, 30, 11, 59)
print(bday)

# 출력 예시: 2022-08-30 11:59:00

다음 단계는 앞에서 설명한 대로 timedelta 객체인 time_diff를 계산하는 것입니다. bday에서 today를 빼면 시간차가 계산됩니다.

time_diff = bday - today
print(f"Your birthday is in {time_diff}")

# 출력
Your birthday is in 220 days, 2:46:00.127416

남은 일수를 확인하려면 time_diff 객체의 days 속성을 사용합니다.

tdays = time_diff.days
print(f"Your birthday is in {tdays} days.")

# 출력
Your birthday is in 220 days.

초 단위 시간차 계산

이제 생일까지 남은 시간을 초 단위로 계산해 보겠습니다.

총 시간차를 초 단위로 계산하려면 timedelta 객체의 total_seconds() 메서드를 사용합니다.

tsecs = time_diff.total_seconds()
print(f"Your birthday is {tsecs} seconds away.")

# 출력
Your birthday is 19017960.127416 seconds away.

생각보다 오래 기다려야 하네요!

지금까지 두 타임스탬프 사이의 시간차를 초 단위로 계산하는 방법을 알아봤습니다.

기본 사항을 다시 한번 살펴보면, 하루는 24시간, 1시간은 60분, 1분은 60초로 구성됩니다.

다음 이미지를 통해 이를 요약할 수 있습니다.

시, 분, 초

따라서 초를 분, 시간, 일로 변환하려면 해당 변환 계수로 나눌 수 있습니다.

시간 변환표

다음 섹션에서는 초 단위 시간차를 분과 시간으로 변환해 보겠습니다.

분 단위 시간차 계산

시간차를 분 단위로 얻으려면 총 초 수를 60으로 나누면 됩니다.

tsecs를 60으로 나누고 tmins 변수에 저장해 보겠습니다.

tmins = tsecs / 60
print(f"Your birthday is {tmins} minutes away.")

# 출력
Your birthday is 316966.0021236 minutes away.

시간 단위 시간차 계산

이제 시간차를 분 단위로 계산했으므로, 이를 다시 60으로 나누거나 총 초 수를 3600으로 나누어 시간 단위로 변환할 수 있습니다.

thrs = tsecs / (60 * 60)
print(f"Your birthday is {thrs} hours away.")

# 출력
Your birthday is 5282.76670206 hours away.

이제 원하는 단위로 시간차를 계산하는 방법을 알게 되었습니다.

결론

이 튜토리얼을 통해 다음과 같은 내용을 학습했습니다.

  • 파이썬의 datetime 모듈을 사용하여 날짜 및 시간 데이터를 생성하고 조작하는 방법
  • timedelta 객체를 사용하여 시간 범위 또는 시간차를 얻는 방법
  • 초, 분, 시간 단위로 시간차를 계산하는 방법

이 가이드가 도움이 되었기를 바랍니다. 이제 파이썬에서 시간차 계산에 대한 모든 것을 배웠으므로, 여러분의 기술을 연습할 차례입니다.

즐거운 코딩 학습 되세요!

여기서 코드를 작성하거나, 파이썬으로 뱀 게임을 만드는 방법을 배워보세요.

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.