Python/Python 심화

Python `datetime`과 시간 관리

임베디드 친구 2025. 7. 22. 20:16
728x90
반응형

Python 고급: datetime과 시간 관리

Python의 datetime 모듈은 날짜와 시간을 다루는 강력한 도구를 제공합니다. 이 글에서는 datetime 모듈의 기본 사용법부터 고급 기능까지 살펴보고, 다양한 실전 예제를 통해 시간 관리를 더욱 효율적으로 할 수 있는 방법을 소개합니다.

1. datetime 모듈 소개

datetime 모듈은 다음과 같은 클래스를 제공합니다:

  • datetime.date: 날짜를 표현하는 클래스.
  • datetime.time: 시간을 표현하는 클래스.
  • datetime.datetime: 날짜와 시간을 함께 표현하는 클래스.
  • datetime.timedelta: 두 날짜/시간의 차이를 나타내는 클래스.
  • datetime.timezone: 시간대 정보를 표현하는 클래스.

2. 현재 날짜와 시간 얻기

from datetime import datetime

# 현재 날짜와 시간 가져오기
now = datetime.now()
print("현재 날짜와 시간:", now)

# 특정 포맷으로 출력
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print("포맷된 날짜와 시간:", formatted_now)

출력 예시:

현재 날짜와 시간: 2024-12-08 14:23:45.123456
포맷된 날짜와 시간: 2024-12-08 14:23:45

날짜와 시간 형식 지정 (strftime)

  • %Y: 4자리 연도
  • %m: 2자리 월
  • %d: 2자리 일
  • %H: 24시간제 시간
  • %M: 분
  • %S: 초

3. 날짜와 시간 파싱 (strptime)

문자열로 표현된 날짜와 시간을 파싱하여 datetime 객체로 변환할 수 있습니다.

from datetime import datetime

# 문자열을 datetime 객체로 변환
date_string = "2024-12-08 14:23:45"
dt = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print("파싱된 datetime 객체:", dt)

출력:

파싱된 datetime 객체: 2024-12-08 14:23:45

4. 날짜 계산과 timedelta

timedelta를 사용하면 날짜와 시간의 차이를 계산하거나 특정 날짜/시간을 조정할 수 있습니다.

from datetime import datetime, timedelta

# 현재 시간
now = datetime.now()

# 7일 후
future_date = now + timedelta(days=7)
print("7일 후:", future_date)

# 2시간 전
past_time = now - timedelta(hours=2)
print("2시간 전:", past_time)

# 두 날짜 간 차이 계산
date1 = datetime(2024, 12, 1)
date2 = datetime(2024, 12, 8)
difference = date2 - date1
print("두 날짜 간 차이:", difference)

출력 예시:

7일 후: 2024-12-15 14:23:45.123456
2시간 전: 2024-12-08 12:23:45.123456
두 날짜 간 차이: 7 days, 0:00:00

5. 시간대 처리

Python의 datetime 모듈은 timezone 클래스를 통해 시간대를 처리할 수 있습니다.

from datetime import datetime, timezone, timedelta

# UTC 시간
utc_now = datetime.now(timezone.utc)
print("UTC 시간:", utc_now)

# 특정 시간대 (예: KST = UTC+9)
kst = timezone(timedelta(hours=9))
kst_now = utc_now.astimezone(kst)
print("KST 시간:", kst_now)

출력 예시:

UTC 시간: 2024-12-08 05:23:45.123456+00:00
KST 시간: 2024-12-08 14:23:45.123456+09:00

6. 날짜와 시간 비교

datetime 객체는 비교 연산자를 지원하므로, 날짜와 시간을 쉽게 비교할 수 있습니다.

from datetime import datetime

dt1 = datetime(2024, 12, 1)
dt2 = datetime(2024, 12, 8)

# 비교 연산
print("dt1 < dt2:", dt1 < dt2)
print("dt1 == dt2:", dt1 == dt2)
print("dt1 > dt2:", dt1 > dt2)

출력:

dt1 < dt2: True
dt1 == dt2: False
dt1 > dt2: False

7. 실제 사용 예제

7.1. 작업 기한 계산기

from datetime import datetime, timedelta

# 작업 시작 날짜
start_date = datetime(2024, 12, 1)

# 작업 기간 (예: 10일)
duration = timedelta(days=10)
end_date = start_date + duration
print("작업 기한:", end_date)

7.2. 특정 시간 주기 이벤트 생성

from datetime import datetime, timedelta

# 시작 시간
start_time = datetime(2024, 12, 8, 8, 0, 0)

# 30분 간격 이벤트 생성
interval = timedelta(minutes=30)
current_time = start_time

while current_time.hour < 12:
    print("이벤트 시간:", current_time)
    current_time += interval

출력 예시:

이벤트 시간: 2024-12-08 08:00:00
이벤트 시간: 2024-12-08 08:30:00
이벤트 시간: 2024-12-08 09:00:00
...

8. 주의사항과 팁

  1. UTC 시간 권장: 서버 간 시간 동기화나 글로벌 서비스를 운영할 때는 UTC 시간을 기본으로 사용하세요.
  2. 타임존 관리: 사용자 로컬 시간대는 pytz 또는 zoneinfo 모듈을 활용하면 더욱 효율적입니다.
  3. ISO 8601 표준 준수: 날짜와 시간을 문자열로 저장하거나 교환할 때는 ISO 8601 형식을 사용하는 것이 좋습니다.
from datetime import datetime

# ISO 8601 포맷
iso_format = datetime.now().isoformat()
print("ISO 8601 포맷:", iso_format)

출력:

ISO 8601 포맷: 2024-12-08T14:23:45.123456

결론

Python의 datetime 모듈은 날짜와 시간을 다룰 때 필수적인 도구입니다. 기본적인 사용법부터 고급 기능까지 익히면 다양한 시간 기반 작업을 효과적으로 처리할 수 있습니다.

728x90
반응형