파이썬의 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을 이용해서 시간을 단순하게 숫자로 저장하고 처리하는 경우가 많다.
컴퓨터 친화적인 Unix timestamp값은 인간에게 직관적이지 않다.
예를 들어, time stamp 1575142526.500323
를 보고, 무슨 날짜와 시간을 나타내는지를 바로 알아차릴 수 있는 사람은 많지 않을 것이다.
따라서 time
모듈은 timestamp가 주어졌을 때, 날짜와 시간을 알아내기 위한 API를 제공한다. 이를 위해 time
모듈은 내부적으로 날짜와 시간을 표현하기 위해서 9개의 속성을 갖는 time_structure
클래스를 사용하게 된다.
time
모듈의 time()
함수는 현재 Unix timestamp를 소수로 리턴합니다. 정수쪽은 초단위이고, 소수쪽은 마이크로 초단위다.
gmtime()
함수는 주어진 timestamp값을 GMT 기준의 time_structure
타입 데이터로 변환해준다.
(참고 - GMT Time이란 영국 그리니치 천문대를 기준으로 한 그리치니 표준 시간대를 의미)
localtime()
함수는 주어진 timestamp값을 현지 시간대 기준의 time_structure
타입 데이터로 변환해준다.
결과값 :
ctime()
함수는 주어진 timestamp를 현지 시간대 기준으로 미국에서 사용하는 요일 월 일 시:분:초
형식으로 반환한다. 간단하게 timestamp가 나타내는 날짜와 시간을 확인해보는 용도로 쓰기에 좋다.
strftime()
함수는 ctime()
함수처럼 정해진 포맷이 아닌 다양한 포맷의 문자열 변환을 가능하게 해준다. 첫 번째 인자로 포맷을 넘겨야 하는데, 포맷 규칙은 파이썬 공식레퍼런스를 참고하면 된다. 두 번째 인자로는 반드시 timestamp
형식이 아닌 time_struct
형식 데이터를 써야한다. 위에서 다룬 gmttime()
혹은 localtime()
같은 함수를 사용해서 time_struct
타입 데이터를 확보한 후에 strftime()
함수의 두 번째 인자로 넘기면 된다.