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. 주의사항과 팁
- UTC 시간 권장: 서버 간 시간 동기화나 글로벌 서비스를 운영할 때는 UTC 시간을 기본으로 사용하세요.
- 타임존 관리: 사용자 로컬 시간대는
pytz
또는zoneinfo
모듈을 활용하면 더욱 효율적입니다. - 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
반응형
'Python > Python 심화' 카테고리의 다른 글
Python `os`, `sys`를 활용한 시스템 관리 (0) | 2025.07.24 |
---|---|
Python collections 모듈을 이용한 데이터 구조 (0) | 2025.07.23 |
Python 다중 스레드와 병렬 처리 (0) | 2025.07.21 |
Python 예외 처리 및 예외 클래스 생성 (0) | 2025.07.20 |
Python 메타클래스 이해하기 (0) | 2025.07.19 |