Django как использовать системный часовой пояс?
По какой-то причине django по умолчанию использует America/Chicago
, когда TIME_ZONE
не указан.
Мой сервер работает на локальных устройствах, поэтому системные часовые пояса везде и могут меняться, если люди переезжают. Есть ли способ решить эту задачу?
Я просто хочу, чтобы os.environ["TZ"]
не устанавливалась, возможно ли это? Django при запуске установит в эту переменную значение chicago
"Америка/Чикаго" - часовой пояс по умолчанию.
Когда вы устанавливаете USE_TZ в False, Django по умолчанию использует 'America/Chicago' . Интересно, что даже если вы установите USE_TZ в True, если вы не установите TimeZone, django все равно по умолчанию будет использовать часовой пояс 'America/Chicago'. На самом деле, начиная с версии Django 5.0, поддержка часовых поясов включена по умолчанию.
Django устанавливает переменные окружения таким образом, чтобы его процесс работал в часовом поясе по умолчанию. Это происходит независимо от значения USE_TZ и текущего часового пояса.
Django автоматически устанавливает переменную окружения TZ.
Я просто хочу, чтобы os.environ["TZ"] не устанавливался, возможно ли это?
Да, это возможно. Для этого необходимо вручную настроить конфигурацию .
Но лучше использовать timezone и установить его в UTC (Django рекомендует делать именно так).
Даже если ваш сайт доступен только в одном часовом поясе, все равно рекомендуется хранить данные в базе данных в UTC. Основная причина - переход на летнее время (DST). Во многих странах существует система DST, при которой часы переводятся вперед весной и назад осенью. Если вы работаете по местному времени, то, скорее всего, дважды в год, когда происходит переход, вы столкнетесь с ошибками.
Вы можете установить пустую строку, чтобы использовать системный часовой пояс:
...
TIME_ZONE = ""
...
Вы также можете использовать библиотеку tzlocal
(я полагаю, что она является зависимостью Django) для определения текущего системного часового пояса:
import tzlocal
...
TIME_ZONE = tzlocal.get_localzone_name()
...