У меня возникают трудности с получением результатов запроса в моем собственном часовом поясе. например: определение поля модели:
some_datetime_field= models.DateTimeField(null=True)
Запрос:
MyModel.values_list("some_datetime_field",flat=True).first()
возвращается
datetime.datetime(2019, 11, 5, 14, 56, 16, tzinfo=<UTC>)
вместо возвращения
datetime.datetime(2019, 11, 5, 6, 56, 16, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)
Я работаю с python V3.7.5, Django V2.2.7 и PostgreSQL V12 в качестве моей базы данных. В моей настройке у меня есть:
TIME_ZONE = "America/Los_Angeles"
USE_TZ = True
USE_I18N = True
USE_L10N = True
В документации говорится о настройках «TIME_ZONE»: https://docs.djangoproject.com/en/2.2/ref/settings/#time-zone
Если USE_TZ имеет значение True и база данных поддерживает часовые пояса (например, PostgreSQL), установка этого параметра является ошибкой.
поэтому я попытался удалить TIME_ZONE из своей настройки:
USE_TZ = True
USE_I18N = True
USE_L10N = True
но это тоже не сработало, даже хуже, когда я пытаюсь локализовать его с помощью timezone.localtime(datetime_example)
, я получаю время по чикагскому времени:
datetime.datetime(2019, 11, 5, 8, 56, 16, tzinfo=<DstTzInfo 'America/Chicago' CST-1 day, 18:00:00 STD>)
Как настроить запрос, чтобы он возвращал дату и время в выбранном мной часовом поясе, а не в формате UTC?
TIME_ZONE
(не обращайте внимания на предупреждение), а затем отметьтеtimezone.localtime
. - person heemayl   schedule 19.11.2019