Python - datetime의 timezone 변경 방법

날짜 시간 정보가 있는 datetime 객체의 timezone을 변경하는 방법을 소개합니다.

1. Local 현재 시간, UTC 현재 시간

  • datetime.now()는 현재 국가의 시간을 리턴합니다.
  • datetime.utcnow()는 UTC의 기준인 영국의 시간을 리턴합니다.
  • datetime.now(timezone.utc)는 timezone이 적용되어 UTC 시간으로 표현됩니다.
from datetime import datetime, timedelta, timezone

datetime_now = datetime.now()
datetime_utc = datetime.utcnow()
datetime_utc2 = datetime.now(timezone.utc)

print("datetime_now:", datetime_now)
print("datetime_utc:", datetime_utc)
print("datetime_utc2:", datetime_utc2)

Output:

datetime_now: 2021-06-27 11:06:14.077584
datetime_utc: 2021-06-27 02:06:14.077594
datetime_utc2: 2021-06-27 02:06:14.077598+00:00

2. datetime 객체에 timezone 적용

  • UTC에 timezone을 적용하여 국가별로 시간을 다르게 표현할 수 있습니다.
  • 한국은 UTC에서 영국과 +9시간의 차이가 나기 때문에 timezone(timedelta(hours=9))으로 timezone 객체를 만듭니다.
  • datetime.astimezone()으로 datetime 객체에 timezone을 적용할 수 있습니다.
from datetime import datetime, timedelta, timezone

datetime_utc = datetime.utcnow()

timezone_kst = timezone(timedelta(hours=9))
datetime_kst = datetime_utc.astimezone(timezone_kst)

print("datetime_utc:", datetime_utc)
print("datetime_kst:", datetime_kst)

timezone_tw = timezone(timedelta(hours=8))
datetime_tw = datetime_utc.astimezone(timezone_tw)
print("datetime_tw:", datetime_tw)

Output:

datetime_utc: 2021-06-27 02:08:46.887454
datetime_kst: 2021-06-27 02:08:46.887454+09:00
datetime_tw: 2021-06-27 01:08:46.887454+08:00

대만은 UTC 기준으로 영국과 +8시간의 차이가 납니다. timedelta(hours=8)으로 timezone을 정의할 수 있습니다.

3. timezone이 적용된 datetime 객체 생성

timezone이 적용된 datetime 객체를 생성할 때, 생성자 인자에 timezone 객체를 전달하면 됩니다.

from datetime import datetime, timedelta, timezone

timezone_tw = timezone(timedelta(hours=8))
datetime_taipei = datetime(2021, 6, 27, 9, 20, 13, 223000, tzinfo=timezone_tw)
print("datetime_taipei:", datetime_taipei)

timezone_jst = timezone(timedelta(hours=9))
datetime_jst = datetime(2021, 6, 27, 9, 20, 13, 223000, tzinfo=timezone_jst)
print("datetime_jst:", datetime_jst)

Output:

datetime_taipei: 2021-06-27 09:20:13.223000+08:00
datetime_jst: 2021-06-27 09:20:13.223000+09:00

References

Loading script...

Related Posts

codechachaCopyright ©2019 codechacha