장고는 내부적으로 날짜/시간 필드를 어떻게 저장합니까? 저장하기 전에 현지 시간을 UTC로 변환합니까? stdlib에서 생성 된 순진한 datetime을 제공하고 있습니다.Django, Python datetime.now() 및 시간대 저장
a = Message(fromm = fromm, to = to,
sent_time = datetime.datetime.now(), content = content)
장고는 내부적으로 날짜/시간 필드를 어떻게 저장합니까? 저장하기 전에 현지 시간을 UTC로 변환합니까? stdlib에서 생성 된 순진한 datetime을 제공하고 있습니다.Django, Python datetime.now() 및 시간대 저장
a = Message(fromm = fromm, to = to,
sent_time = datetime.datetime.now(), content = content)
Django ORM은 SQL 데이터베이스의 해당 필드에 날짜 시간을 저장합니다. 기본 SQL C 럼은 사용 된 데이터베이스에 의해 결정됩니다. 예 : MySQL을 들어, 매핑은 여기에 정의됩니다
https://github.com/django/django/blob/master/django/db/backends/mysql/creation.py#L16
변환 장고에서 SQL에 :
https://github.com/django/django/blob/master/django/db/backends/mysql/base.py#L272
변환 SQL에서 장고 :
https://github.com/django/django/blob/master/django/db/models/fields/init.py#L1186
파이썬 datetime.datetime.now()
소위 시간대 순진 (timezone-naive datetime)이며 시간대 정보가 있습니다. 따라서 시간을 저장할 때 정보가 손실 될 수 있으며 사용법이 권장되지 않습니다. It returns the local time. 시간대 정보가 생략되면 Django USE_TZ 설정에 따라 default timezone information이 내부적으로 개조 된 것으로 판단됩니다.
대신 django.utils.timezone.now()
(현지 표준 시간대) 또는 django.utils.timezone.utcnow()
(UTC 표준 시간대 시간)을 사용해야합니다.
https://docs.djangoproject.com/en/dev/topics/i18n/timezones/#naive-and-aware-datetime-objects
예,'timezone.now를 사용하여()'내 걱정을 해결 추가 정보. 설정에서'TIME_ZONE'을 설정하면 DB의 UTC 시간이 현지 시간으로 변환됩니다 – aitchnyu