如何在Django中设置时区?

jef*_*eff 113 python django timezone utc

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

TIME_ZONE = 'UTC'
Run Code Online (Sandbox Code Playgroud)

但我希望我的应用程序以UTC + 2时区运行,所以我将其更改为

TIME_ZONE = 'UTC+2'
Run Code Online (Sandbox Code Playgroud)

它给出了错误ValueError: Incorrect timezone setting: UTC+2.这样做的正确方法是什么?

谢谢!

Sel*_*cuk 177

以下是有效时区列表:

http://en.wikipedia.org/wiki/List_of_tz_database_time_zones

您可以使用

TIME_ZONE = 'Europe/Istanbul'
Run Code Online (Sandbox Code Playgroud)

对于UTC + 02:00

  • 实际上,这只是夏令时不启用的半年。您可以全年使用 Africa/Mbabane 进行 UTC+2 (4认同)

jfs*_*jfs 19

要从tz数据库获取一组所有有效时区名称(ID),您可以在Python中使用pytz模块:

>>> import pytz # $ pip install pytz
>>> pytz.all_timezones_set
LazySet({'Africa/Abidjan',
         'Africa/Accra',
         'Africa/Addis_Ababa',
         'Africa/Algiers',
         'Africa/Asmara',
         'Africa/Asmera',
         ...
         'UTC',
         'Universal',
         'W-SU',
         'WET',
         'Zulu'})
Run Code Online (Sandbox Code Playgroud)

  • 还值得注意的是,时区列表较短,不包括带有`pytz.common_timezones` 的已弃用时区。 (3认同)

Cra*_*ast 11

tzinfo数据库中选择一个有效的时区.他们倾向于采取例如Africa/GaborneUS/Eastern

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


ANF*_* PV 11

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

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

  • 非洲
  • 美国(北美和南美)
  • 南极洲
  • 北极
  • 亚洲
  • 大西洋
  • 澳大利亚
  • 欧洲
  • Etc(管理区域。例如,“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
Run Code Online (Sandbox Code Playgroud)


Hus*_*mar 10

这对我来说效果很好(我仍在本地测试该应用程序)。在settings.py文件类型中:

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Asia/Beirut'

USE_I18N = True

USE_L10N = True

USE_TZ = False
Run Code Online (Sandbox Code Playgroud)

#使用你自己的TIME_ZONE: https://gist.github.com/heyalexej/8bf688fd67d7199be4a1682b3eec7568

  • 需要将`USE_TZ`指定为False以强制整个应用程序使用所选的`TIME_ZONE`。 (2认同)

Pun*_*rud 6

通用解决方案,基于 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'
Run Code Online (Sandbox Code Playgroud)

+/- 是有意切换的。