지역_시간에는_time보다는_datetime을_사용하라

매일 공부(ML)·2022년 8월 22일
0

이어드림

목록 보기
124/146

지역 시간에는 time보다는 datetime을 사용하라

time 모듈

  • 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

datetime 모듈

  • 여러 시간대를 다뤄야하는 경우 사용

  • 여러 시간대에 속한 시간을 상호 변환

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

Summary

  • 여러 다른 시간대를 변환할 때는 time 모듈을 쓰지 말라

  • 여러 다른 시간대를 신뢰할 수 있게 변환하고 싶으면 datetime과 pytz모듈을 함께 사용

  • 항상 시간을 UTC로 표시하고, 최종적으로 표현하기 직전에 지역 시간으로 변환

profile
성장을 도울 아카이빙 블로그

0개의 댓글