Home > front end >  Django is using wrong TIME_ZONE
Django is using wrong TIME_ZONE

Time:01-17

On my production environment only, my app uses America/Chicago as time zone while I have TIME_ZONE = "UTC" in my settings. I'm running my code on Debian and the system locale is C.UTF-8 with Django 4.1.

I dug in Django code and find the source of my problem here: https://github.com/django/django/blob/c2118d72d61746f2462fca695dbf3adf44ebf8f7/django/utils/timezone.py#L72

I tried in ./manage.py shell to reproduce the problem:

# ./manage.py shell
Python 3.10.9 (main, Dec 21 2022, 08:51:48) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.conf import settings
>>> from django.utils import timezone
>>> import zoneinfo
>>> settings.TIME_ZONE
'UTC'
>>> timezone.get_current_timezone()
zoneinfo.ZoneInfo(key='America/Chicago')

And if I call the methods in get_current_timezone, I have a different result

>>> settings.USE_DEPRECATED_PYTZ
False
>>> zoneinfo.ZoneInfo(settings.TIME_ZONE)
zoneinfo.ZoneInfo(key='UTC')

Where could the America/Chicago come from ?

CodePudding user response:

Willem was right, I used timezone.something() in my settings before the TIME_ZONE was set.

For posterity: I'm using django-split-settings and was using globs ("settings/*.py") and the order of the files was different locally and in production.

  • Related