Python에서 시간에 접근하기 위해 time 모듈을 사용할 수 있습니다. 이는 다양한 시간 관련 기능을 제공합니다. time 모듈에서 중요하게 생각하는 Epoch(기원)시간이 시작되는 지점이며, 이는 플랫폼에 따라 다릅니다. Windows와 대부분의 Unix 시스템에서는 1970년 1월 1일 00:00:00(UTC)입니다. 주어진 플랫폼에서 epoch를 알고 싶다면, 아래 코드를 실행시키면 됩니다.

time 모듈에서는 아래의 용어들을 자주 사용합니다.

  • 타임스탬프(TimeStamp) : Epoch 이후로, 초 단위로 측정한 절대시간입니다.
  • 협정세계시(UTC) : 1972년부터 시행된 국제 표준시. 영어권의 사람들과 프랑스어권의 사람들은 각각 자신의 언어로 된 CUTTUC를 사용하길 원했는데, 이 분쟁은 두 언어 모두 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부터 인자로 전달된 secsGMT 기준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 객체인 인자 tformat에 지정된 문자열 형태로 변환합니다. 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

+ Recent posts