localtime함수를 사용하여 유닉스 타임스탬프를 호스트 컴퓨터의 시간대에 맞는 지역 시간으로 변환
지역 시간은 strftime함수를 사용하여 이해하기 슆게 표현
import time
now = 1598523184
local_tuple = time.localtime(now)
time_format = '%Y-%m-%d %H:%M:%S'
time_str = time.strftime(time_format, local_tuple)
print(time_str)
2020-08-27 10:13:04
#반대로 실행
time_tuple = time.strptime(time_str, time_format)
utc_now = time.mktime(time_tuple)
print(utc_now)
1598523184.0
여러 시간대를 다뤄야하는 경우 사용
여러 시간대에 속한 시간을 상호 변환
from datetime import datetime, timezone
now = datetime(2020,8,27,10,13,4)
time_tuple = now.timetuple()
utc_now = time.mktime(time_tuple)
print(utc_now)
1598523184.0
#pytz모듈을 활용하면 기본 설치가 제공하지 않은 시간대 정보 추가 가능
import pytz
arrival_sfo = "2020-08-28 04:13:04"
sfo_dt_naive = datetime.strptime(arrival_sfo, time_format)
eastern = pytz.timezone('US/Pacific')
sfo_df = eastern.localize(sfo_dt_naive)
utc_dt = pytz.utc.normalize(sfo_df.astimezone(pytz.utc))
print(utc_dt)
2020-08-28 11:13:04+00:00
korea = pytz.timezone('Asia/Seoul')
korea_dt = korea.normalize(utc_dt.astimezone(korea))
print(korea_dt)
2020-08-28 20:13:04+09:00
여러 다른 시간대를 변환할 때는 time 모듈을 쓰지 말라
여러 다른 시간대를 신뢰할 수 있게 변환하고 싶으면 datetime과 pytz모듈을 함께 사용
항상 시간을 UTC로 표시하고, 최종적으로 표현하기 직전에 지역 시간으로 변환