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()
...
Вернуться на верх