파이썬이나, SQL 등을 다루다 보면, TIme 표현이 여러 가지가 있기 때문에, 이를 잘 정리해두고 왜 이렇게 저장을 다르게 해놓는지에 대해 이해할 필요가 있다.
추후에 분석의 효율을 위해서 시간 표기 방법에 대해 공부하고 정리해보기로 했다.
Time 에 대한 이해 : timestamp, UTC, KST
먼저, 컴퓨터는 날짜와 시간을 단순하게 표현하기 위해서 epoch time을 사용한다.
epoch time은 UTC(GMT + 0) 기준으로 1970년 1월 1일, 0시 0분 0초부터의 경과 시간을 나타낸다.
일반적으로 우리가 쓰는 날짜와 시간은 세계 각지의 시간대(time zone), 일광절약시간, 음력, 윤달 등을 구분해줘야하는데, epoch time 을 쓰면 간편하게 표현할 수 있다.
epoch 는 뭐고, UTC 는 뭔데?
epoch는 중요한 사건이 발생한 시점부터의 기간을 의미.
UTC 는 국제 표준시를 의미. 1970년 1월 1일 자정이 0밀리초이고, 그때부터 현재까지 시간이 계속 누적되고 있다.
KST?
한국 표준시다. UTC 보다 9시간 더 빠르고, 표시할 때는 ‘ UTC + 09:00 ’ 이렇게 한다.
결론
Unix time, POSIX time 이라고 쓰여있으면 epoch time을 의미하는 것이고, 이를 다시 timestamp 라고 부르기도 한다.
→ Unix time = POSIX time = epoch time = timestamp
time 실습 코드 : UTC → timestamp → UTC → KST
from datetime import datetime, timezone, timedelta
# 01 ) 파이썬 'datetime' 패키지를 이용해서 현재시간 얻기 : datetime.now()함수 이용
now_utc = datetime.now(timezone.utc) # utc 기준으로 현재 시간 가져오기
print('#01) Now UTC ==> ', now_utc)
# 2023-07-01 05:39:58.863089+00:00
timestamp = now_utc.timestamp()
print('#02) timestamp (micro sec) : ', timestamp)
print('#02) timestamp ( sec) : ', int(timestamp))
####02) timestamp (micro sec) : 1688190198.158278
####02) timestamp ( sec) : 1688190198
#03) timestamp 를 다시 UTC로 변환 : datetime.utcfromtimestamp()함수 이용
now_utc_from_timestamp = datetime.utcfromtimestamp(timestamp)
print('#03) Now UTC from timestamp ==> ', now_utc_from_timestamp)
######03) Now UTC from timestamp ==> 2023-07-01 05:49:04.778891
# 04) UTC를 KST 로 변환 : timedelta() 함수이용
now_kst = now_utc_from_timestamp + timedelta(hours=9)
print('#04) Now kst KST ==> ', now_kst.strftime('%Y-%m-%d %H:%M:%S'))
######04) Now kst KST ==> 2023-07-01 14:51:32
Python
복사