[Python] 시간과 날짜 처리
Python은 날짜와 시간을 다루기 위한 강력한 모듈들을 제공합니다. datetime
, time
, calendar
모듈을 활용하면 다양한 날짜와 시간 작업을 간단히 수행할 수 있습니다. 이 글에서는 날짜와 시간을 다루는 기본적인 방법, 시간 계산, 특정 포맷 변환 등 유용한 기능들을 소개합니다.
1. datetime
모듈: 날짜와 시간 처리의 기본
datetime
모듈은 날짜와 시간 정보를 생성, 조작, 포맷팅 하는 데 사용됩니다.
날짜와 시간 생성
from datetime import datetime
# 현재 날짜와 시간
now = datetime.now()
print("현재 날짜와 시간:", now)
# 특정 날짜와 시간
specific_date = datetime(2024, 12, 25, 15, 30)
print("특정 날짜와 시간:", specific_date)
날짜와 시간 분리
datetime
객체에서 연도, 월, 일, 시간 등을 추출할 수 있습니다.
print("연도:", now.year)
print("월:", now.month)
print("일:", now.day)
print("시간:", now.hour)
print("분:", now.minute)
print("초:", now.second)
날짜와 시간 포맷팅
strftime
메서드를 사용하여 날짜와 시간을 문자열로 포맷할 수 있습니다.
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print("포맷된 날짜와 시간:", formatted_date)
포맷 코드:
%Y
: 4자리 연도%m
: 2자리 월%d
: 2자리 일%H
: 24시간 형식의 시간%M
: 분%S
: 초
2. time
모듈: 시간 조작
time
모듈은 주로 시간 간격, Unix 타임스탬프를 처리하거나 특정 작업을 지연시키는 데 사용됩니다.
현재 시간 (Unix 타임스탬프)
import time
# 현재 시간
timestamp = time.time()
print("현재 타임스탬프:", timestamp)
시간 지연
time.sleep()
를 사용하여 프로그램 실행을 일시 중지할 수 있습니다.
print("3초 대기 중...")
time.sleep(3)
print("다시 실행")
3. calendar
모듈: 달력 작업
calendar
모듈은 달력을 생성하거나 특정 날짜의 요일을 확인하는 데 유용합니다.
연도와 월의 달력 출력
import calendar
# 2024년 11월의 달력
print(calendar.month(2024, 11))
특정 날짜의 요일 확인
# 요일 반환 (0: 월요일, 6: 일요일)
weekday = calendar.weekday(2024, 11, 11)
print("2024년 11월 11일의 요일:", calendar.day_name[weekday]) # "Monday"
윤년 확인
# 윤년인지 확인
is_leap = calendar.isleap(2024)
print("2024년은 윤년인가요?", is_leap)
4. 시간 계산
timedelta
객체를 사용하면 날짜와 시간 간격을 쉽게 계산할 수 있습니다.
날짜 더하기 및 빼기
from datetime import timedelta
# 현재 날짜
today = datetime.now()
# 7일 후
next_week = today + timedelta(days=7)
print("7일 후:", next_week)
# 30일 전
last_month = today - timedelta(days=30)
print("30일 전:", last_month)
두 날짜 간의 차이
# 특정 날짜
future_date = datetime(2025, 1, 1)
# 날짜 차이 계산
difference = future_date - today
print("2025년 1월 1일까지 남은 일수:", difference.days)
5. 문자열과 날짜 간 변환
문자열 → 날짜 (strptime
)
strptime
메서드를 사용해 문자열을 datetime
객체로 변환할 수 있습니다.
date_string = "2024-11-11 15:30:00"
parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print("문자열에서 변환된 날짜:", parsed_date)
날짜 → 문자열 (strftime
)
반대로 datetime
객체를 포맷팅 하여 문자열로 변환할 수 있습니다.
formatted_string = parsed_date.strftime("%A, %d %B %Y")
print("포맷된 문자열:", formatted_string) # 예: "Monday, 11 November 2024"
6. 타임존 처리
pytz
라이브러리를 사용하면 타임존을 쉽게 다룰 수 있습니다.
타임존 추가
pip install pytz
from datetime import datetime
import pytz
# UTC 시간
utc_time = datetime.now(pytz.UTC)
print("UTC 시간:", utc_time)
# 특정 타임존으로 변환
korea_time = utc_time.astimezone(pytz.timezone("Asia/Seoul"))
print("한국 시간:", korea_time)
Python의 datetime
, time
, calendar
모듈은 날짜와 시간을 다루는 데 필요한 강력한 도구를 제공합니다. 날짜와 시간을 계산하거나 포맷팅, 변환하는 작업을 손쉽게 처리할 수 있으며, 타임존 처리 및 시간 간격 계산 같은 고급 작업도 가능합니다.