파이썬 datetime 모듈 마스터: 날짜, 시간, timedelta, strftime 완벽 해설
파이썬의 datetime 라이브러리는 날짜, 시간, 시간 간격을 조작하기 위한 강력한 도구 세트를 제공합니다. 문자열이나 타임스탬프 대신 객체를 사용함으로써 개발자는 정밀한 계산과 포맷팅을 확신 있게 수행할 수 있습니다.
핵심 datetime 클래스
- date – 연, 월, 일 처리
- time – 특정 날짜와 무관하게 시, 분, 초, 마이크로초 처리
- datetime – 날짜와 시간을 단일 객체로 결합
- timedelta – 기간을 표현하여 날짜/시간 덧셈/뺄셈 가능
- tzinfo – 타임존 지원을 위한 추상 베이스
시작하기: 임포트와 인스턴스화
조작 전 필요한 클래스를 임포트:
from datetime import date, time, datetime, timedelta
date 객체 인스턴스화:
today = date.today()
print(today) # 예: 2024-04-19
현재 날짜와 시간
datetime.now() 메서드는 현재 로컬 날짜와 시간을 반환:
now = datetime.now()
print(now) # 2024-04-19 14:35:12.123456
시간 구성요소만 추출하려면:
current_time = now.time()
print(current_time) # 14:35:12.123456
strftime으로 출력 포맷팅
strftime 메서드는 datetime 객체를 포맷 코드를 사용해 사람이 읽기 쉬운 문자열로 변환:
now.strftime("%Y-%m-%d %H:%M:%S") # "2024-04-19 14:35:12"
자주 쓰는 지시자:
%Y – 4자리 연도
%y – 2자리 연도
%a – 요일 약어
%A – 전체 요일명
%b – 월 약어
%B – 전체 월명
%d – 일(01-31)
%H – 시간(00-23)
%I – 시간(01-12)
%M – 분(00-59)
%S – 초(00-59)
%p – AM 또는 PM
예제:
# 12시간 형식(AM/PM)
print(now.strftime("%I:%M:%S %p"))
# 24시간 형식
print(now.strftime("%H:%M"))
timedelta 활용하기
timedelta는 시간 간격을 표현하며 날짜/시간과 산술 연산 지원:
# 365일 timedelta 생성
one_year = timedelta(days=356)
# 오늘로부터 1년 후
future_date = datetime.now() + one_year
print(future_date)
이벤트까지 남은 일수 계산(예: 새해):
today = date.today()
new_year = date(today.year, 1, 1)
if new_year < today:
new_year = date(today.year + 1, 1, 1)
print("New Year is in", (new_year - today).days, "days")
else:
print("New Year is in", (new_year - today).days, "days")
종합 예제
아래는 핵심 기능을 시연하는 즉시 실행 가능한 간결한 스크립트입니다:
from datetime import datetime, date, timedelta
# 현재 날짜와 시간
now = datetime.now()
print("Now:", now)
# 포맷 예제
print("ISO format:", now.strftime("%Y-%m-%d %H:%M:%S"))
print("12-hour time:", now.strftime("%I:%M:%S %p"))
# Timedelta 연산
one_week = timedelta(weeks=1)
print("One week from now:", now + one_week)
# 새해까지 남은 일수
today = date.today()
new_year = date(today.year + (today < date(today.year, 1, 1)), 1, 1)
print("Days until New Year:", (new_year - today).days)
요약
파이썬의 datetime 모듈은 날짜와 시간 조작을 위한 강력하고 타입 안전한 도구를 제공합니다:
date, time, datetime 객체로 명확하고 명시적인 표현 사용
strftime으로 유연하고 로케일 인식 가능한 포맷팅
timedelta로 산술 연산과 간격 계산 수행
- 사용 전 관련 클래스 임포트 필수; 그렇지 않으면 인터프리터가 에러 발생
이 도구들은 단순한 타임스탬핑부터 복잡한 스케줄링 로직까지 필수적입니다.