datetime 모듈 - 날짜와 시간의 중심
datetime
모듈은 파이썬에서 가장 기본적이면서 강력하게 날짜와 시간을 다룰 수 있는 도구입니다.
현재 시각 가져오기, 날짜 계산, 포맷 지정 등 대부분의 작업이 이 모듈 하나로 가능합니다.
1. 현재 날짜 및 시각 가져오기
from datetime import datetime
now = datetime.now()
print("현재 시각:", now)
해석:
datetime.now()
는 시스템 기준의 현재 날짜와 시간을 반환합니다.- 출력 형식:
2025-04-11 14:23:59.123456
와 같은 datetime 객체
2. 날짜 구성 요소 추출
print(now.year) # 연도
print(now.month) # 월
print(now.day) # 일
print(now.hour) # 시
datetime 객체는 속성으로 연, 월, 일, 시, 분, 초를 손쉽게 접근할 수 있습니다.
데이터 정렬, 파일 이름 생성, 로그 기록 등에 자주 사용됩니다.
3. 날짜 포맷 변경 (strftime)
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted) # 출력: 2025-04-11 14:23:59
해석:
%Y
: 4자리 연도,%m
: 2자리 월,%d
: 2자리 일%H:%M:%S
: 시:분:초 형식
사용자 정의 형식으로 날짜를 문자열로 표현할 수 있어 파일 저장명, 로그 등에 필수입니다.
4. 문자열을 datetime으로 변환 (strptime)
date_str = "2025-04-11"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
print(date_obj)
strptime()
은 문자열을 datetime 객체로 변환합니다.
외부 파일이나 사용자 입력 데이터를 처리할 때 꼭 필요한 기능입니다.
날짜 계산과 시간 간격 처리 (timedelta)
datetime.timedelta
는 날짜 또는 시간 간의 차이(간격)를 표현할 때 사용됩니다.
며칠 후, 몇 시간 전 등의 계산을 손쉽게 할 수 있습니다.
1. 날짜 더하기와 빼기
from datetime import timedelta
tomorrow = now + timedelta(days=1)
yesterday = now - timedelta(days=1)
print("내일:", tomorrow)
print("어제:", yesterday)
해석:timedelta(days=1)
은 하루를 의미합니다.
이 객체를 더하거나 빼면 간단하게 날짜 연산이 가능합니다.
2. 두 날짜 간 차이 계산
birthday = datetime(2025, 12, 25)
diff = birthday - now
print("크리스마스까지 남은 일수:", diff.days)
두 datetime 객체의 차이는 timedelta 객체로 반환되며,diff.days
를 통해 일수만 추출할 수 있습니다.
3. 초 단위 시간 차이
start = datetime(2025, 4, 11, 14, 0, 0)
end = datetime(2025, 4, 11, 14, 30, 0)
gap = end - start
print("경과 시간(초):", gap.total_seconds())
시간 차이를 초 단위로 계산하고 싶은 경우 total_seconds()
를 활용하면 됩니다.
로깅, 타이머, 처리 시간 측정 등에서 매우 유용합니다.
time과 calendar 모듈의 활용
time
과 calendar
모듈은 datetime
과 보완적으로 사용됩니다.
time은 초 단위 시간 처리, calendar는 요일과 달력 처리에 특화되어 있습니다.
1. time 모듈로 지연(delay) 주기
import time
print("3초 후 실행됩니다...")
time.sleep(3)
print("실행 완료!")
해석:time.sleep(초)
는 지정한 시간 동안 코드 실행을 멈춥니다.
자동화 스크립트에서 대기, 반복 간격 조절, 애니메이션 처리 등에 사용됩니다.
2. 현재 시간 측정 (timestamp)
now_timestamp = time.time()
print("유닉스 타임스탬프:", now_timestamp)
해석:time.time()
은 1970년 1월 1일부터 현재까지의 초 단위를 반환합니다.
파일 버전 관리, 로그 기록 등에 고유한 시간값으로 자주 사용됩니다.
3. calendar 모듈로 달력 출력
import calendar
print(calendar.month(2025, 4))
해석:calendar.month(연도, 월)
은 해당 월의 달력을 문자열 형태로 반환합니다.
콘솔 프로그램, CLI 달력 도구 제작에 유용합니다.
4. 특정 날짜의 요일 확인
day_index = calendar.weekday(2025, 4, 11)
weekdays = ["월", "화", "수", "목", "금", "토", "일"]
print(f"2025년 4월 11일은 {weekdays[day_index]}요일입니다.")
calendar.weekday()
는 요일 인덱스(0:월 ~ 6:일)를 반환합니다.
이 값을 활용해 요일을 문자열로 출력할 수 있습니다.
datetime
, time
, calendar
는 날짜와 시간을 자동으로 처리할 수 있는 파이썬의 강력한 도구입니다.
파일 이름에 날짜 넣기, 주기적 알림 설정, 로그 시간 기록 등 자동화 작업에서 필수적인 기능입니다.
이번 글에서 배운 날짜 계산, 포맷팅, 달력 출력 등을 활용해 여러분만의 시간 기반 프로그램을 만들어보세요!
다음 단계로는 pytz나 dateutil 같은 타임존 처리 라이브러리도 함께 배워보는 것을 추천합니다.