본문 바로가기
Python/Python 패키지

Python time, 파이썬 시간 다루기

by 베타코드 2022. 3. 19.
반응형

안녕하세요. 독학코딩입니다. 오늘은 파이썬으로 어떤 프로그래밍을 하던지 항상 사용하게 되는 time 모듈에 대해서 배워보겠습니다. 비슷한 모듈로는 datetime과 calender가 있는데 datatime은 이미 다루었으니 궁금하시면 아래 링크 참고해주시면 됩니다.

 

 

Python 파이썬 datetime 기초

안녕하세요 독학코딩입니다. 오늘은 파이썬 datetime에대해서 배워보겠습니다. 파이썬에 기본적으로 포함된 패키지로 날짜와 시간을 다룰때 사용하는 패키지 입니다. datetime은 date, time, datetime의 c

stcodelab.com

 

파이썬에서 time () 모듈을 사용하는 가장 큰 이유는 컴퓨터의 Unix timestamp 값을 사람이 읽기 좋게 만들기 위해서입니다. timestamp는 1647624962.163253 같은 시간표현 방식으로 이를 보고 한 번에 날짜와 시간을 이해할 수 있는 사람은 없습니다. 그래서 파이썬 time() 모듈을 사용하는 것입니다.

 

파이썬 time()은 날짜와 시간을 표현하는 9개의 속성을 갖는 time_struct 데이터 타입이 있습니다.

속성 설명 범위
tm_year 예시 2022, 2021
tm_mon 1~12
tm_mday 1~31
tm_hour 0~23
tm_min 0~59
tm_sec 0~61
tm_wday 요일 0:월, 1:화, 2:수, 3:목, 4:금, 5:토, 6:일
tm_yday 연중 경과일 1~366
tm_isdst 일광절약타임 적용여부 0:미적용, 1:적용, -1:모름

 

Python time(), 현재 timestamp 구하기

import time

Timestamp = time.time()
print(Timestamp)

파이썬 time() 에서 timestamp를 구하는 방법은 간단합니다. 또한 이 timestamp는 과거로 가지 않는 이상 매번 증가하는 유니크한 키가 되니 때문에 시계열 데이터 등에 ID로도 많이 사용됩니다.

 

Python time, gmtime()과 localtime()

gmtime()은 주어진 timestamp 값을 GMT 기준의 time_struct로 변환해줍니다. localtime()은 주어진 timestamp 값을 현지 시간대 기준의 time_struct로 변환해줍니다.

import time

Timestamp = time.time()
print(time.gmtime(Timestamp))
print(time.localtime(Timestamp))

# 현재 시간의 timestamp의 time_struct를 구할 것이라면 time.time()을 할 필요가 없습니다.

print(time.gmtime())    # print(time.gmtime(Timestamp))와 동일
print(time.localtime())    # print(time.localtime(Timestamp))와 동일

특정 데이터만 원한다면 이런 식으로도 가능합니다.

import time

Timestamp = time.time()
lc_time = time.localtime(Timestamp)
print(lc_time)
print("year : ", lc_time.tm_year)
print("month : ", lc_time.tm_mon)
print("day : ", lc_time.tm_mday)
print("hour : ", lc_time.tm_hour)
print("minute : ", lc_time.tm_min)
print("second : ", lc_time.tm_sec)

 

 

Python time, strftime()
time()이 timestamp의 가독성을 위한 모듈이라고 했는데 솔직히 localtime(), gmtime() 이 두 함수의 결과값도 사람이 읽기 좋은 형태는 아닙니다. 그래서 strftime()을 사용합니다.
strftime()localtime(), gmtime()의 time_struct를 인자로 받아서 우리가 원하는 형식으로 날짜와 시간을 출력할 수 있게 해 줍니다.

지시자 의미
%a 로케일의 약식 요일 이름.
%A 로케일의 전체 요일 이름.
%b 로케일의 약식 월 이름.
%B 로케일의 전체 월 이름.
%c 로케일의 적절한 날짜와 시간 표현.
%d 월중 일(day of the month)을 십진수로 [01,31].
%H 시(24시간제)를 십진수로 [00,23].
%I 시(12시간제)를 십진수로 [01,12].
%j 연중 일(day of the year)을 십진수로 [001,366].
%m 월을 십진수로 [01,12].
%M 분을 십진수로 [00,59].
%p AM이나 PM에 해당하는 로케일의 값.
%S 초를 십진수로 [00,61].
%U 연중 주 번호(일요일이 주의 시작)를 십진수로 [00,53].
첫 번째 일요일에 선행하는 새해의 모든 날은 주 0으로 간주합니다.
%w 요일을 십진수로 [0(일요일),6].
%W 연중 주 번호(월요일이 주의 시작)를 십진수로 [00,53].
첫 번째 월요일에 선행하는 새해의 모든 말은 주 0으로 간주합니다.
%x 로케일의 적절한 날짜 표현.
%X 로케일의 적절한 시간 표현.
%y 세기가 없는 해(year)를 십진수로 [00,99].
%Y 세기가 있는 해(year)를 십진수로.

위의 표는 strftime()의 인자로 사용되는 값들로 출력 형식을 결정해줍니다.

import time

lc_time = time.localtime()
print(lc_time)
print(time.strftime("%Y/%m/%d %H:%M:%S", lc_time))

모든 예시를 보여드릴 수는 없으니 위 예시를 기준으로 표의 여러 가지 인자들을 직접 활용해보시기 바랍니다. 참고로 print(time.strftime("%Y/%m/%d %H:%M:%S", lc_time)) 에서 /와 :는 제가 임의로 작성한 str입니다. 편하게 바꾸셔도 됩니다.

 

Python time, strptime()
time_struct를 특정 날짜/시간 포맷으로 바꾸는 기능이 있다면 당연히 특정 날짜/시간 포맷을 다시 time_struct 데이터 타입으로 바꾸는 기능도 존재하겠죠? 그게 바로 strptime()입니다.

import time

str_A = "2022/03/19 03:39:43"
time_struct = time.strptime(str_A, "%Y/%m/%d %H:%M:%S")
print(time_struct)

위처럼 특정 포맷의 날짜/시간 str을 다시 time_struct로 변환할 수 있습니다.

 

Python time, time.sleep()
마지막으로 아마 이미 알고 계시겠지만, 프로그램의 진행을 잠시 멈출 수 있는 기능입니다. 테스트 코드를 짜거나 의도적인 휴식이 필요할 때 많이 사용합니다.

import time

print(“start”)
time.sleep(3)
print(“end”)
반응형

댓글