본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] datetime 모듈 완전 가이드: 날짜와 시간을 자유자재로

by Papa Martino V 2025. 7. 22.
728x90

datetime 모듈 완전 가이드: 날짜와 시간을 자유자재로
[PYTHON] datetime

 

Python에서 날짜와 시간 처리의 기준이 되는 datetime 모듈은 기본 기능부터 타임존, 포맷팅, 연산 등 실무에 꼭 필요한 요소들을 제공합니다. 본 글에서는 실무 중심으로 구성해 초보자도 체계적으로 배울 수 있으며, 고급 활용까지 정리했습니다.

1. datetime 모듈이란?

  • Python 표준 라이브러리로, 설치 없이 사용 가능
  • 주요 클래스: date, time, datetime, timedelta, timezone
  • 날짜 계산, 포맷 변환, 타임존 처리, 주기 계산 등에 유용

2. 기본 사용법: 날짜와 시간 생성


import datetime

# 오늘 날짜
today = datetime.date.today()
print(today)  # 2025-07-20

# 현재 날짜와 시간
now = datetime.datetime.now()
print(now)    # 2025-07-20 10:30:45.123456

# 특정 날짜 생성
d = datetime.date(2020, 1, 15)
t = datetime.time(14, 30, 0)
print(d, t)   # 2020-01-15 14:30:00
  

3. 날짜와 시간 더하기/빼기


from datetime import datetime, timedelta

now = datetime.now()
one_week = now + timedelta(weeks=1)
yesterday = now - timedelta(days=1)
print(one_week, yesterday)
  

4. 문자열 ↔ datetime 변환


from datetime import datetime

s = "2025-07-20 15:45:00"
dt = datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
formatted = dt.strftime("%d/%m/%Y, %I:%M %p")
print(formatted)  # 20/07/2025, 03:45 PM
  

5. 타임존 처리

Python 3.9 이상에서는 timezone을 직접 사용할 수 있습니다.


from datetime import datetime, timezone, timedelta

utc_now = datetime.now(timezone.utc)
kst = timezone(timedelta(hours=9))
kst_now = utc_now.astimezone(kst)
print(utc_now, kst_now)
  

6. datetime 비교 및 차이


from datetime import datetime

a = datetime(2025,7,1)
b = datetime(2025,7,20)
print(b > a)          # True
print((b - a).days)   # 19
  

7. 활용 예시 비교 한눈에

목적 방법 예시
오늘 날짜 date.today() 2025‑07‑20
현재 시각 datetime.now() 2025‑07‑20 10:30:45
타임존 변환 astimezone() UTC → KST
날짜 계산 timedelta +30일 → 다음 달

8. 고급: 반복적인 일정 생성


from datetime import datetime, timedelta

def schedule(start, count, interval_days):
    dates = []
    current = start
    for _ in range(count):
        dates.append(current)
        current += timedelta(days=interval_days)
    return dates

for d in schedule(datetime(2025,7,20), 5, 7):
    print(d.date())
  

9. 주의사항 & 팁

  • 날짜 비교 전 모두 datetime 또는 date인지 확인
  • 타임존 혼용 시 오류 방지하려면 aware datetime만 사용
  • 문자열 포맷이 다른 경우 예외 처리 필요 (try-except)
  • 시간 단위 계산 시 leap seconds 고려할 것 (보통 무시 가능)

10. 결론

datetime 모듈은 날짜/시간 처리의 핵심으로, 포매팅, 연산, 타임존, 반복 일정까지 다룰 수 있습니다. 실무에서 자주 사용하는 기능을 체계적으로 익히면 안정적이고 신뢰 있는 시간 기반 로직을 구현할 수 있습니다.

참고 출처

728x90