
TimeZone이 UTCUTC는 협정 세계 시간으로 국제 표준 시간UTC로 두면 데이터베이스 저장 시에도 UTC 시간으로 저장Tip! 데이터베이스가
UTC기준으로만 저장되는 이유
- 주된 이유는 일광 절약 시간 (
DST)
- 많은 국가에는 시계가 봄에 앞으로 이동하고 가을에 뒤로 이동하는 DST 시스템이 있음
- 현지 시간으로 작업하는 경우 전환이 발생할 때 1년에 두 번 오류가 발생할 수 있음
pytz문서는 이러한 문제에 대해 더 자세히 설명함- 이 문제에 대한 해결책은 코드에서
UTC를 사용하고 최종 사용자와 상호 작용할 때만 현지 시간을 사용하는 것
settings.py 에서 수정해야 함# settings.py
TIME_ZONE = 'Asia/Seoul'
USE_TZ = False
USE_TZ을 False로 변경하지 않으면 데이터베이스는 계속 UTC 를 사용USE_TZ = True template과 form에만 적용되며 그 외는 여전히 UTC 사용USE_TZ = False False 설정 시 한국 시간을 구하기 위해서는 Naive datetime 객체인 datetime.datetime.now() 대신 Aware datetime 객체인 django.utils의 timezone을 사용해야 함# Aware datetime 객체
import django.utils import timezone
now = timezone.now()
# Naive datetime 객체
import datetime
now = datetime.datetime.now()
tzinfo) 속성를 포함하여 날짜와 시간을 가지는 datetime 객체tzinfo는 UTC, 시간대 이름 및 DST 오프셋에서 로컬 시간의 오프셋을 나타내는 방법을 담고 있음Aware datetime 객체는 자신의 시각 정보를 다른 Aware datetime 객체와 상대적인 값으로 조정할 수 있도록 시간대나 일광 절약 시간 정책 혹은 적용 가능한 알고리즘 정보를 담고 있음datetime.datetime(2019, 2, 15, 4, 58, 4, 114979, tzinfo=<UTC>)datetime.datetime(2019, 2, 15, 4, 58, 4, 114979)