파이썬 프로그래밍 time 이해 : timestamp, UTC, KST

파이썬 프로그래밍 time 이해 : timestamp, UTC, KST

시계열 데이터 분석을 위해서는 시간을 지정해줘야 할 경우가 종종 생깁니다. 이번 포스팅에서는 파이썬 프로그래밍에서 주로 사용되는 Epoch time, timestamp 등이 무엇을 의미하는지, 이를 위해 필요한 파이썬 패키지 datetime에 대해 알아보겠습니다. timestamp, UTC, 그리고 한국 표준시로 나타내는 방법을 확인해 보시기 바랍니다.


글의 순서

복잡한 시간을 단순하게 표시해주는 Epoch Time (=timestamp)
현재시간을 Epoch time으로 바꾸는 파이썬 프로그래밍
Epoch time을 UTC로 바꿔주는 파이썬 time 모듈
UTC를 KST로 바꿔주는 파이썬 코드
파이썬 time 실습코드 : UTC → timestamp → UTC → KST


Epoch Time (=timestamp), 복잡한 시간을 단순하게 표시해주는 방법

컴퓨터에서 복잡한 날짜와 시간을 단순하게 표현하기 위해서 epoch time을 이용합니다. epoch time은 UTC(GMT+0) 기준으로 1970년 1월 1일 0시 0분 0초부터의 경과 시간을 나타냅니다. 우리가 쓰는 날짜와 시간은 세계 각지의 시간대(time zone), 일광절약시간, 음력, 윤달 등을 구분해줘야 하는데, epoch time을 쓰면 간편하게 표현할 수 있습니다.

여기서, epoch와 UTC가 궁금하실텐데요. epoch는 중요한 사건이 발생한 시점부터의 기간을 의미하며, UTC(Universal Time Coordinated)는 국제 표준시를 의미합니다. UTC는 1972년 1월 1일부터 시행되었는데, 1970년 1월 1일 자정이 0밀리초이며, 그때부터 시간이 누적되고 있습니다. 참고로 한국 표준시(KST)는 UTC 보다 9시간이 빠르며, UTC+09:00로 표시합니다.

Unix time, POSIX time이라고 쓰여 있으면, 이는 epoch time을 의미하며, epoch time을 timestamp로 부르기도 합니다. 그러니까 epoch time, timestamp, Unix time, POSIX time은 모두 같은 의미입니다.



현재시간을 Epoch time으로 바꾸는 파이썬 프로그래밍

epoch time은 1970년 1월 1일 0시 0분 0초부터의 경과 시간을 나타내고, epoch time, timestamp, Unix time, POSIX time이 모두 같은 의미라고 말씀드렸습니다.

현재 시간을 epoch time으로 바꾸려면, 먼저 현재시간을 가져와야 합니다. 아래의 ‘파이썬 time 실습코드’ #01) 부분에서 현재시간을 국제표준시(UTC)로 가져오고 있습니다.

파이썬 time 실습코드 #02) 부분은 현재 시간을 epoch time으로 나타내주는 부분입니다. 현재 시간을 timestamp로 나타내기 위해 파이썬 패키지 중 datetime을 사용하였습니다. timestamp로 표시된 현재시간은 1673665834.613139로 소숫점이하 6자리까지를 보여주고 있습니다. 그러니까 마이크로 초(micro second)까지 나타내줍니다.


Epoch time을 UTC로 바꿔주는 파이썬 time 모듈

시간을 epoch time(=timestamp)으로 표현하면 코드 상에서 처리하기는 좋은데, 우리가 알아보긴 힘듭니다. 파이썬의 time 모듈은 timestamp를 우리에게 익숙한 날짜와 시간으로 나타내주는 함수를 제공합니다. 바로 파이썬 time 실습코드 #03) datetime.fromtimestamp() 라는 함수입니다. timestamp를 인자로 넣어주면, KST(한국표준시)로 바꿔줍니다. 한국표준시가 아니라 UST로 받고 싶다면, tz=timezone.utc을 인자로 넘겨줍니다. 실습코드 #05) 부분에서 timezone.utc를 인자로 넘겨줄 경우와, 안 넘겨줄 경우 timedelta를 사용해서 UTC를 구하는 방법을 서로 비교하였습니다.

물론 파이썬 time 실습코드 #01)처럼 datetime.now(timezone.utc)를 쓰면 UTC를 바로 확인할 수 있고, 여기에 9시간을 더해주면 KST를 구할 수 있습니다. 그렇지만 파이썬 코드 상에서 timestamp로 일을 처리하다가, 마지막 순간을 우리가 확인해야 할 때 유용하게 사용할 수 있습니다.


UTC를 KST로 바꿔주는 파이썬 코드

한국 표준시(KST)는 UTC 보다 9시간이 빠르니까, UTC를 한국 표준시(KST)로 바꿔주려면, 9시간을 더해주면 됩니다.

그러니까,
토요일 오전 2:30, Coordinated Universal Time(UTC)는
토요일 오전 11:30, Korea Standard Time(KST)입니다.


파이썬 time 실습코드 #04) 부분이 UTC를 KST로 바꿔주는 파이썬 코드입니다. UTC를 한국 표준시(KST)로 바꿔줄 때, datetime 패키지에 들어있는 timedelta()라는 함수를 사용하면 되는데, timedelta() 함수의 인자로 ‘hours = 9’를 넘겨줍니다. now_kst를 그대로 출력하면, ‘2024-04-04 13:34:43.975182+00:00’처럼 마이크로 초 단위로 표시하는데다가 +00:00이란 부분이 붙습니다. 출력할 때 이 부분을 제거하기 위해 strftime()이라는 함수를 사용해서 문자열로 출력될 수 있도록 하였습니다.


파이썬 time 실습코드 : UTC → KST → timestamp

실습코드01에는 현재 시간을 timestamp로 확인해보고, timestamp를 UTC로, UTC를 KST로 변환하는 파이썬 코드를 나타내었습니다. 파이썬 코드 안에서 print문을 유심히 봐주시기 바랍니다.


마치며 …

시계열 데이터 분석을 위해서는 시간을 지정해줘야 할 경우가 종종 생깁니다. 이번 포스팅에서는 파이썬 프로그래밍에서 시간과 날짜를 편하게 쓰게 해주는 방법에 대해 알아보았습니다. 이 중심에는 파이선 패키지 datetime이 있습니다.

국제 표준시 UTC로부터 timestamp를 만드는 방법, timestamp에서 다시 UTC로 변환하는 방법과 국제 표준시 UTC를 한국 표준시 KST로 만드는 방법을 정리한 ‘파이썬 time 실습코드’가 유용하길 바랍니다.

 

 

함께 참고하면 더 좋은 글 :
1. 파이썬 프로그래밍 시작하기 (1) 온라인 프로그래밍 환경 replit
2. 파이썬 IDE 설정. 비주얼 스튜디오 코드(Visual Studio Code, VS code)
3. 파이썬 프로그래밍 시작 (2) 변수, 타입, 문자열 실습
4. 파이썬 프로그래밍 시작 (14) 패키지, 모듈
5. 시계열 데이터 가시화 (3) 파이썬 날짜변환, pandas를 이용한 그래프 그리기
6. 시계열 데이터 분석 : pandas CSV 파일 저장, 읽기
7. 업비트 시계열 데이터 가시화를 위한 전처리


참고자료

IBM i, 협정 세계시(UTC)

Leave a Comment