티스토리 뷰

728x90
반응형

time module

예를 들어 데이터 베이스에 생성한 레코드에 현재 생성 시간을 넣어야 하는 경우에 python에서 제공하는 time 모듈을 사용한다.

 

간단하게 다음 코드에서 처럼 time.time()을 이용하면 시간 정보를 뽑을 수 있고 gmtime으로 보통 사용하는 년-월-일 시분-초  정보를 받아올 수 있다.

import time

print('time.time():', time.time())
print('time.gtime():',time.gmtime(time.time()))

다음과 같은 결과를 확인할 수 있다.

time.time(): 1559205027.740446
time.gtime(): time.struct_time(tm_year=2019, tm_mon=5, tm_mday=30, tm_hour=8, tm_min=30, tm_sec=27, tm_wday=3, tm_yday=150, tm_isdst=0)

 

문자열 format문을 이용하여 다음 코드 처럼 특정한 포맷으로 문자열을 만들어 저장하는데 쓸 수 있다.

import time
t = time.gmtime(time.time())
t_str = '{:04}-{:02}-{:02} {:02}:{:02}:{:02}'.format(t.tm_year,t.tm_mon,t.tm_mday,t.tm_hour,t.tm_min,t.tm_sec)
print(t_str)

 

결과의 사례는 다음과 같다.

2019-05-30 08:30:27

그런데 문제가 있는 것은 시간이 내 컴퓨터에 있는 시간하고 차이가 난다.  찾아보니 UTC (국제표준시) 기준으로 쓰다보니 시간이 9시간이 빠진 시간으로 나타나는 문제가 있다. (코드 실행 시간이 오후 5시 30분이다)

 

localtime, strftime

결국 내가 있는 위치의 시간대를 알거나 아니면 간단하게 localtime 모듈를 사용하면 된다. 그리고 포맷을 일일이 맞추는 것이 아니라 strftime 모듈을 이용하면 된다.

 

import time
from time import localtime, strftime

t_local = localtime(time.time())
time_format = '%Y-%m-%d %H:%M:%S'
time_str = strftime(time_format,t_local)
print(time_str)

출력 결과 위에서 문자열 format을 이용한 결과와 동일하고 현재 로컬 시간에 맞게 나오는 것을 알 수 있다.

2019-05-30 17:30:27

 

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함