在我的django项目的settings.py文件中,我有这样一行:

TIME_ZONE = 'UTC'

但我想让我的应用程序在UTC+2时区运行,所以我把它改成了

TIME_ZONE = 'UTC+2'

它给出错误ValueError:不正确的时区设置:UTC+2。正确的做法是什么?

谢谢!


当前回答

我发现这个问题是想把我的Django项目的settings.py文件中的时区更改为英国。

使用jfs的解决方案中的tz数据库,我找到了答案:

    TIME_ZONE = 'Europe/London'

其他回答

基于Django的TZ名称支持的通用解决方案:

UTC-2 = 'Etc/GMT+2'
UTC-1 = 'Etc/GMT+1'
UTC = 'Etc/GMT+0'
UTC+1 = 'Etc/GMT-1'
UTC+2 = 'Etc/GMT-2'

+/-被有意切换。

有效的timeZone值基于Linux和其他Unix系统使用的tz (timeZone)数据库。这些值是“Area/Location”形式的字符串(xsd:string),其中:

Area是一个大陆或海洋的名称。目前区域包括:

非洲 美国(包括北美和南美) 南极洲 北极 亚洲 大西洋 澳大利亚 欧洲 等(行政区域。例如,“Etc/UTC”表示 协调世界时。) 印度 太平洋

位置是城市、岛屿或其他地区的名称。

区域名称和输出缩写遵循POSIX(可移植操作系统接口)UNIX约定,它在格林威治以西使用正号(+),在格林威治以东使用负号(-),这与通常预期的相反。例如,“Etc/GMT+4”对应于UTC(格林威治以西)后4小时(而不是UTC(协调世界时)前4小时(格林威治以东)。

这是所有有效时区的列表

您可以在settings.py中更改时区,如下所示

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Asia/Kolkata'

USE_I18N = True

USE_L10N = True

USE_TZ = True

从tzinfo数据库中选择一个有效的时区。它们倾向于采用例如Africa/Gaborne和US/Eastern的形式

找到与您最近的城市相匹配的城市,或者与您的时区相匹配的城市,然后将TIME_ZONE的值设置为匹配。

正确使用区域/位置格式。 例子:

TIME_ZONE = 'Asia/Kolkata'

添加Preferred TIME_ZONE并设置USE_TZ为False,如下所示

TIME_ZONE = '亚洲/加尔各答' USE_TZ = False

希望它能起作用。