파이썬에서는 많은 시간(time) 관련 함수들이 시간을 9개의 숫자로 이루어진 튜플(tuple) 형태로 처리합니다. 이렇게 9개의 요소로 구성된 시간 튜플을 흔히 타임튜플(TimeTuple)이라고 부르며, 각 인덱스 위치에는 아래 표와 같이 특정한 의미의 시간 정보가 담깁니다.
타임튜플의 9가지 필드
| 인덱스 | 필드(Field) | 값 범위 |
|---|---|---|
| 0 | 연도 (4자리) | 예: 2008 |
| 1 | 월 | 1 ~ 12 |
| 2 | 일 | 1 ~ 31 |
| 3 | 시 | 0 ~ 23 |
| 4 | 분 | 0 ~ 59 |
| 5 | 초 | 0 ~ 61 (60 또는 61은 윤초) |
| 6 | 요일 | 0 ~ 6 (0은 월요일) |
| 7 | 연중 경과 일수 | 1 ~ 366 (율리우스일) |
| 8 | 서머타임(DST) 적용 여부 | -1, 0, 1 (-1은 라이브러리가 DST를 자동 판단) |
struct_time 구조체와의 관계
위에서 살펴본 타임튜플은 사실 파이썬 time 모듈의 struct_time 구조체와 동일한 구조입니다. 다만 struct_time은 단순 튜플과 달리 이름 붙은 속성(attribute)을 통해 각 값에 접근할 수 있어 훨씬 직관적입니다. struct_time이 가지는 주요 속성은 다음과 같습니다.
| 인덱스 | 속성(Attribute) | 값 범위 |
|---|---|---|
| 0 | tm_year | 예: 2008 |
| 1 | tm_mon | 1 ~ 12 |
| 2 | tm_mday | 1 ~ 31 |
| 3 | tm_hour | 0 ~ 23 |
| 4 | tm_min | 0 ~ 59 |
| 5 | tm_sec | 0 ~ 61 (60 또는 61은 윤초) |
| 6 | tm_wday | 0 ~ 6 (0은 월요일) |
| 7 | tm_yday | 1 ~ 366 (율리우스일) |
| 8 | tm_isdst | -1, 0, 1 (-1은 라이브러리가 DST를 자동 판단) |
타임튜플 사용 예제
time.localtime() 함수를 호출하면 현재 현지 시간을 struct_time 객체로 얻을 수 있습니다.
import time
local_time = time.localtime()
print(local_time)
# time.struct_time(tm_year=2024, tm_mon=5, tm_mday=15,
# tm_hour=10, tm_min=30, tm_sec=45,
# tm_wday=2, tm_yday=136, tm_isdst=0)
print(local_time.tm_year) # 2024
print(local_time.tm_mon) # 5
print(local_time.tm_hour) # 10이처럼 타임튜플과 struct_time 구조체의 각 인덱스와 속성 의미만 정확히 이해하면, time.localtime(), time.gmtime(), time.mktime() 등 파이썬의 다양한 시간 처리 함수를 훨씬 쉽게 활용할 수 있습니다.