코딩을 하면 시간과 관련된 계산을 해야 하는 경우가 많이 발생하는데 이 때 time 모듈을 사용하게 됩니다. time 모듈은 내장 모듈이며 이름과 같이 시간 관련된 기능을 제공합니다. 간단한 시간 데이터를 다룰 때 가져다 쓰게 되며 연도, 월, 일, 시, 분, 초, 요일 등이 인식되어 사용할 수 있게 해줍니다.
time 모듈
time 모듈의 함수를 사용하기 위해서는 time 모듈을 import 해야 합니다.
time 모듈은 내장 모듈로 python 설치 시 함께 설치되기 때문에 별도 라이브러리 다운로드가 필요하지 않습니다.
아래와 같이 import로 호출하게 됩니다.
import time
[시간 관련 기본 정보]
* UTC (Universial Time Cordinated) : 협정 세계시, GMT와 UTC 사이의 시차는 없고, UTC가 오차가 더 적음
* GMT (Greenwich Mean Time) : 그리니치 평균시, 영국 그리니치 천문대 위치를 기준으로 정한 표준시 (1925년부터 1972년까지 표준시)
* KST (Korea Standard Time): 한국 표준시, UTC +9
time()
time 모듈의 time 함수를 사용하면 현재 시간을 초로 나타내는 실수형(Unix Time)으로 반환합니다.
import time
print(time.time())
아래는 Unix timestamp로 반환된 형태입니다. 정확히는 1970년 1월 1일 0시 0분 0초 UTC에서부터 현재까지 몇 초가 지났는지를 표시한 것으로 정수부는 초 단위, 소수부는 마이크로초 단위 입니다.
1656033435.9345262
gmtime()
gmtime(sec)는 입력된 초를 UTC 기준으로 변환 후 struct time으로 반환합니다.
별도 입력 값(sec)이 없으면 default 값으로 현재 시간(time.time())을 전달합니다.
import time
print(time.gmtime())
tm_year = 년, tm_mon = 월, tm_mday = 일, tm_hour = 시, tm_min = 분, tm_sec = 초, tm_wday = 요일,
tm_yday = 연중 경과일(1월 1일 부터 경과한 일수),
tm_isdst = 서머타임 적용 여부(0 : 미적용, 1 : 적용, -1 : 모름)
time.struct_time(tm_year=2022, tm_mon=6, tm_mday=24, tm_hour=1, tm_min=33, tm_sec=32, tm_wday=4, tm_yday=175, tm_isdst=0)
실행결과를 보시면 tm_xxxx로 표현된 변수에 값들이 들어간 것이 보이실텐데요. 변수는 따로 사용하실 수 있습니다.
# Struct time 변수 사용 예
t = time.gmtime()
print(t.tm_year)
결과 값으로 2022가 나오는 것을 확인할 수 있습니다.
localtime( )
gmtime(sec)이 세계의 기준 시간이라면 localtime(sec)은 현재 코드를 실행한 사람이 위치한 지역의 현지 시간을 기준으로struct_time으로 반환합니다. gmtime()과 같이 별도 입력 값(sec)이 없으면 default 값으로 현재 시간(time.time())을 전달합니다.
import time
print(time.localtime())
결과값의 형태는 gmtime과 동일합니다.
time.struct_time(tm_year=2022, tm_mon=6, tm_mday=24, tm_hour=11, tm_min=0, tm_sec=43, tm_wday=4, tm_yday=175, tm_isdst=0)
asctime( )
struct_time을 반환합니다. 'Fri Jun 24 11:07:54 2022' 형식의 문자열로 반환합니다.
struct_time이 없으면 default 값으로 localtime() 기준으로 변환 후 반환합니다.
import time
print(time.asctime(struct_time))
결과값은 하기와 같습니다.
Fri Jun 24 11:07:54 2022
strftime( ) / strptime() : struct_time을 문자열로 / 문자열을 struct_time으로 변환
strftime(format, [t])는 입력받은 struct_time을 format에서 지정한 형태의 문자열로 변환 후 반환합니다.struct_time이 없으면 default 값으로 localtime() 기준으로 변환 후 반환합니다.
import time
tm = time.localtime()
str_tm = time.strftime("%Y-%m-%d %I:%M:%S %p", tm)
print(str_tm)
strftime()의 실행결과는 아래와 같습니다.
2022-06-24 11:16:00 AM
strptime()은 문자열을 struct_time으로 변환하여 반환합니다.
import time
str_tm = "2022-02-24 11:10:08 PM"
tm = time.strptime(str_tm, "%Y-%m-%d %I:%M:%S %p")
print(tm)
strptime()의 실행결과는 아래와 같습니다.
time.struct_time(tm_year=2022, tm_mon=2, tm_mday=24, tm_hour=23, tm_min=10, tm_sec=8, tm_wday=3, tm_yday=55, tm_isdst=-1)
< Output Format >
Format | Description | Example |
%c | 날짜, 요일, 시간을 출력, 현재 시간대 기준 | Tue May 4 00:33:26 2021 |
%x | 날짜를 출력, 현재 시간대 기준 | 05/04/21 |
%X | 시간을 출력, 현재 시간대 기준 | 00:33:26 |
%a | 요일 줄임말 | Sun, Mon, … Sat |
%A | 요일 | Sunday, Monday, …, Saturday |
%w | 요일을 숫자로 표시, 월~일 | 0, 1, …, 6 |
%d | 일 | 01, 02, …, 31 |
%b | 월 줄임말 | Jan, Feb, …, Dec |
%B | 월 | January, February, …, December |
%m | 숫자 월 | 01, 02, …, 12 |
%y | 두 자릿수 연도 | 01, 02, …, 99 |
%Y | 네 자릿수 연도 | 0001, 0002, …, 2017, 2018, 9999 |
%H | 시(24hour) | 00, 01, …, 23 |
%I | 시(12hour) | 01, 02, …, 12 |
%p | AM, PM | AM, PM |
%M | 분 | 00, 01, …, 59 |
%S | 초 | 00, 01, …, 59 |
%Z | 시간대 | 대한민국 표준시 |
%j | 1월 1일부터 경과한 일수 | 001, 002, …, 366 |
%U | 1년중 주차(월요일이 한 주의 시작) | 00, 01, …, 53 |
%W | 1년중 주차(월요일이 한 주의 시작) | 00, 01, …, 53 |
ctime( )
현지 시간을 'Fri Jun 24 11:07:54 2022' 형식의 문자열로 반환합니다.
import time
print(time.ctime())
결과값은 하기와 같습니다.
Fri Jun 24 11:07:54 2022
sleep( )
스크립트 언어인 파이썬 코드를 한줄씩 실행하다보면, 코드가 명령한 내용이 완전히 실행될 때 까지 기다려줘야 할 때가 있습니다. 특히 selenium이나 pyautogui 등에서 많이 사용이 됩니다.
sleep(sec)는 입력된 초만큼 스레드를 정지 합니다.
* 스레드(Thread)는 프로세스 내에서 실행되는 흐름의 단위를 말합니다.
import time
sec = 10
time.sleep(sec) # sec에 delay 시키고 싶은 초를 입력
마무리
time 모듈에서 많이 사용되는 함수들에 대해 알아보았습니다. time 모듈은 이외에도 다야한 시간 관련 함수를 지원합니다.
하기 링크에서는 시간의 연산에 대해 소개 드리도록 하겠습니다. (준비중)