Python에서 시간에 접근하기 위해 time
모듈을 사용할 수 있습니다. 이는 다양한 시간 관련 기능을 제공합니다. time 모듈에서 중요하게 생각하는 Epoch(기원)
은 시간이 시작되는 지점이며, 이는 플랫폼에 따라 다릅니다. Windows와 대부분의 Unix 시스템에서는 1970년 1월 1일 00:00:00(UTC)입니다. 주어진 플랫폼에서 epoch를 알고 싶다면, 아래 코드를 실행시키면 됩니다.
time
모듈에서는 아래의 용어들을 자주 사용합니다.
- 타임스탬프(TimeStamp) : Epoch 이후로, 초 단위로 측정한 절대시간입니다.
- 협정세계시(UTC) : 1972년부터 시행된 국제 표준시. 영어권의 사람들과 프랑스어권의 사람들은 각각 자신의 언어로 된 CUT와 TUC를 사용하길 원했는데, 이 분쟁은 두 언어 모두 C, T, U로 구성되어 있다는 것에 착안하여 UTC로 이름지어 졌습니다.
- 그리니치 평균시(GMT, Greenwich Mean Time) : 런던 그리니치 천문대의 자오선상에서의 평균 태양시. UTC라고 부르기도 하는데, UTC와 GMT는 초의 소숫점 단위에서만 차이가 나기 때문입니다.
- 지방표준시(LST, Local Standard Time) : UTC를 기준으로 경도 15도마다 1시간씩 차이가 발생하는 시간. 한국은 동경 135도를 기준으로 하고 있으며, 따라서 9시간 빠릅니다.
Epoch 이후의 시간은 초 단위로 누적되며, 거의 모든 POSIX 호환 플랫폼에서 윤초는 제외됩니다. time 모듈은 epoch 이전의 날짜와 시간을 처리하지 못할 수도 있으며, 미래 시간의 한계점은 해당 모듈이 의존하고 있는 C 라이브러리에 의해 결정됩니다. 32비트 시스템의 경우 일반적으로 2038년입니다.
epoch부터 현재까지의 시간
time.time()
Epoch부터 현재까지의 시간을 초 단위로 환산하여 float로 반환합니다. '현재 시간'의 기준은 LST입니다. UTC 기준의 timestamp를 얻어내려면, 아래의 time.mktime()
과 time.gmtime()
을 함께 사용하면 됩니다. 일반적으로 Unix 시간(Unix Timestamp)
이라고 합니다.
time.gmtime([secs])
Epoch부터 인자로 전달된 secs
를 GMT 기준의 struct_time 객체로 변환하여 반환합니다. 선택 인자인 secs
가 제공되지 않았거나 None이면 time.time()
에 의해 반환된 timestamp가 사용됩니다.
time.localtime([secs])
time.gmtime()
과 비슷하지만 LST 기준의 struct_time 객체를 만들어 반환합니다.
똑같은 timestamp를 전달하였으나, 실행 환경이 한국 시간 기준이므로 time.gmtime()
보다 9시간이 빠릅니다.
time.mktime(t)
time.localtime()
의 역함수입니다. struct_time
객체를 받아 time.time()
과 호환되는 float 형태의 timestamp를 반환합니다.
time.struct_time 객체
time.gmtime()
, time.localtime()
등에서 반환되는, named tuple 형태로 이루어진 시간을 다루는 객체입니다. 다음과 같은 필드를 가지고 있습니다.
- 0: tm_year
- 1: tm_mon
- 2: tm_mday
- 3: tm_hour
- 4: tm_min
- 5: tm_sec
- 6: tm_wday
- 7: tm_yday
- 8: tm_isdst
- N/A: tm_zone - timezone 이름
- N/A: tm_gmtoff - UTC로부터 몇 초나 앞서 있는지(KST의 경우 9시간 앞서 있으므로 32400)
문자열과의 변환
time.strftime(format[, t])
struct_time
객체인 인자 t
를 format
에 지정된 문자열 형태로 변환합니다. t
가 제공되지 않으면 time.localtime()
에 의해 반환된 시간이 적용됩니다. format
은 문자열이어야 합니다. format string의 종류는 Python library reference에서 확인할 수 있습니다.
time.strptime(string[, format])
string
을 파싱하여 struct_time
객체로 변환합니다. format
은 기본적으로 "%a %b %d %H:%M:%S %Y" 형태입니다.
'Python 계열 > Python Standard Library' 카테고리의 다른 글
[Python Standard Library] re (0) | 2018.09.07 |
---|---|
[Python Standard Library] random (0) | 2018.09.07 |