간단한 시간 데이터를 처리하기 위해서 사용되는 파이썬의 내장 모듈인 time
에 대해서 알아보도록 하겠습니다.
Epoch Time
파이썬의 time
내장 모듈은 주로 epoch time(Unix time, POSIX time)을 다룰 때 사용합니다.
epoch time은 UTC(GMT+0) 기준으로 1970년 1월 1일 0시 0분 0초부터의 경과 시간을 나타내는데 흔히 timestamp라고 불리기도 합니다.
인간이 사용하는 사용하는 날짜와 시간에는 시간대(time zone), 일괄절약타임(date light saving), 윤년/윤달, 양력/음력 등 여러가지 복잡한 개념들이 많이 들어가 있습니다.
따라서 전산 시스템에서는 이렇게 복잡한 날짜와 시간을 모델링하는 대신에, epoch time을 이용해서 시간을 단순하게 숫자로 저장하고 처리하는 경우가 많습니다.
time_struct 클래스
컴퓨터 친화적인 Unix timestamp 값은 인간에게는 직관적이지 않습니다.
예를 들어, timestamp 1575142526.500323
를 보고, 무슨 날짜와 시간을 나타내는지를 바로 알아차릴 수 있는 사람은 많지 않을 것입니다.
따라서, time
모듈은 timestamp가 주어졌을 때, 날짜와 시간을 알아내기 위한 API를 제공하는데요.
이를 위해 time
모듈은 내부적으로 날짜와 시간을 표현하기 위해서 9개의 속성를 갖는 time_struct
클래스를 사용합니다.
이름 | 값 | 비고 |
---|---|---|
tm_year | 연 | 예: 1993, 2019 |
tm_mon | 달 | 범위: 1~12 |
tm_mday | 일 | 범위: 1~31 |
tm_hour | 시 | 범위: 0~23 |
tm_min | 분 | 범위: 0~59 |
tm_sec | 초 | 범위: 0~61 |
tm_wday | 요일 | 범위: 0~6 (0: 월요일) |
tm_yday | 연중 경과일 | 범위: 1~366 |
tm_isdst | 일광절약타임 적용여부 | 0: 미적용 1: 적용 -1: 모름 |
time() 함수: 현재 timestamp 얻기
time
모듈의 time()
함수는 현재 Unix timestamp을 소수로 리턴하는데요. 정수부는 초단위이고, 소수부는 마이크로(micro) 초단위 입니다.
import datetime now = datetime.datetime.now() print now >> 2020/02/04 19:05:50.928134
import time now = time.localtime() print "%04d/%02d/%02d %02d:%02d:%02d" % (now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec) >> 2020/02/04 19:05:50