시간 처리를 위한 두 模块의 용도
Python에서는 시간과 날짜를 다룰 때 주로 time 모듈과 datetime 모듈을 사용합니다. 두 모듈은 각각 다른 용도에 최적화되어 있으며, 상황에 맞게 선택해야 합니다.
time: 타임스탬프 연산과 지연 처리에 적합datetime: 날짜와 시간의 계산, 서식 변환, 형변환 등에 적합
1. time 모듈 활용법
time 모듈은 1970년 1월 1일 00:00:00 UTC부터 현재까지 경과한 초 단위의 값을 다룹니다.
1.1 현재 타임스탬프 얻기
import time
epoch_seconds = time.time()
print(epoch_seconds) # 출력 예: 1707361200.123456
1.2 실행 지연시키기
print("시작...")
time.sleep(3) # 3초 동안 일시 정지
print("종료")
1.3 시간을 문자열로 변환 (strftime)
formatted = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(formatted) # 출력 예: 2025-02-08 14:30:00
1.4 문자열에서 시간으로 파싱 (strptime)
parsed = time.strptime("2024-06-15 09:00:00", "%Y-%m-%d %H:%M:%S")
print(parsed) # time.struct_time 객체 반환
1.5 CPU 실행 시간 측정
cpu_runtime = time.process_time()
print(f"CPU 실행 시간: {cpu_runtime}초")
2. datetime 모듈 활용법
datetime 모듈은 날짜와 시간을 하나의 객체로 관리하며, 다양한 산술 연산과 형식 변환을 지원합니다.
2.1 현재 날짜와 시간 얻기
from datetime import datetime
current = datetime.now()
print(current) # 출력 예: 2025-02-08 14:30:00.123456
2.2 특정 날짜와 시간 생성
target = datetime(2024, 12, 25, 14, 30, 0)
print(target) # 2024-12-25 14:30:00
2.3 날짜와 시간을 문자열로 서식화
formatted = current.strftime("%Y년 %m월 %d일 %H시 %M분 %S초")
print(formatted) # 2025년 02월 08일 14시 30분 00초
2.4 문자열을 날짜 객체로 변환
parsed = datetime.strptime("2025-03-20 18:45:00", "%Y-%m-%d %H:%M:%S")
print(parsed) # datetime 객체
2.5 시간 간격 계산 (timedelta)
from datetime import timedelta
next_week = current + timedelta(weeks=1)
print(f"1주 후: {next_week}")
three_days_later = current + timedelta(days=3)
print(f"3일 후: {three_days_later}")
thirty_minutes_later = current + timedelta(minutes=30)
print(f"30분 후: {thirty_minutes_later}")
2.6 datetime을 타임스탬프로 변환
epoch_value = current.timestamp()
print(epoch_value) # 1707361200.123456
2.7 타임스탬프를 datetime으로 변환
converted = datetime.fromtimestamp(1707361200)
print(converted) # 2025-02-08 14:30:00
2.8 날짜의 개별 구성요소 접근
year = current.year
month = current.month
day = current.day
hour = current.hour
minute = current.minute
second = current.second
print(f"{year}년 {month}월 {day}일 {hour}시 {minute}분 {second}초")
3. 두 모듈의 비교
| 기능 | time |
datetime |
|---|---|---|
| 현재 시간 조회 | time.time() |
datetime.now() |
| 타임스탬프 변환 | time.time() |
datetime.timestamp() |
| 문자열 파싱 | time.strptime() |
datetime.strptime() |
| 문자열 포맷팅 | time.strftime() |
datetime.strftime() |
| 시간 지연 | time.sleep() |
미지원 |
| 시간 계산 | 미지원 | timedelta 객체 사용 |
4. 선택 가이드
보통의 경우 datetime 모듈이 더 직관적이고 사용하기 쉽습니다. 하지만 다음과 같은 상황에서는 time 모듈이 적합합니다:
- 시스템 타임스탬프가 필요한 저수준 작업
- 실행 시간을 일시 정지해야 하는 경우
- 성능 측정이나 벤치마킹
날짜와 시간의 연산이 필요하거나 가독성 있는 출력 형식이 필요하다면 datetime 모듈을 사용하세요.