无效的Django时区
最近在构建项目时,我运行了Django的syncdb命令,结果出现了一个错误:
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "/usr/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/usr/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/core/management/__init__.py", line 252, in fetch_command
app_name = get_commands()[subcommand]
File "/usr/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/core/management/__init__.py", line 101, in get_commands
apps = settings.INSTALLED_APPS
File "/usr/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/utils/functional.py", line 276, in __getattr__
self._setup()
File "/usr/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/usr/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/conf/__init__.py", line 125, in __init__
raise ValueError("Incorrect timezone setting: %s" % self.TIME_ZONE)
ValueError: Incorrect timezone setting: America/New_York EST5EDT SystemV/EST5EDT US/Eastern
我没有更改任何核心设置,所以我不知道为什么会突然出现这个错误。在我的settings.py文件中,TIME_ZONE = 'America/New_York'
这个值是有效的,具体可以参考时区数据库的时区列表。为什么Django不接受这个值呢?
2 个回答
0
我遇到了下面这个错误。*我使用的是 Django 4.2.1:
zoneinfo._common.ZoneInfoNotFoundError: '没有找到键为 America/NewYork 的时区'
因为我把 'America/NewYork'
设置到了 TIME_ZONE,如下所示:
# "settings.py"
TIME_ZONE = 'America/NewYork'
所以,我把 'America/New_York'
设置到 TIME_ZONE
,如下所示,这样错误就解决了:
# "settings.py"
# ↓ "_" is added
TIME_ZONE = 'America/New_York'
32
根据错误信息:
ValueError: 时区设置不正确:America/New_York EST5EDT SystemV/EST5EDT US/Eastern
看起来在 settings.py
文件中,TIME_ZONE
的值是:America/New_York EST5EDT SystemV/EST5EDT US/Eastern
你只需要写 America/New_York
就可以了。
如果不是这样,检查一下这个文件是否存在:
/usr/share/zoneinfo/America/New_York
如果这个文件不存在,那说明你的系统不支持这个时区。
(有效的时区可以在 /usr/share/zoneinfo/
这个目录下找到)