在我的django项目的settings.py文件中,我有这样一行:
TIME_ZONE = 'UTC'
但我想让我的应用程序在UTC+2时区运行,所以我把它改成了
TIME_ZONE = 'UTC+2'
它给出错误ValueError:不正确的时区设置:UTC+2。正确的做法是什么?
谢谢!
在我的django项目的settings.py文件中,我有这样一行:
TIME_ZONE = 'UTC'
但我想让我的应用程序在UTC+2时区运行,所以我把它改成了
TIME_ZONE = 'UTC+2'
它给出错误ValueError:不正确的时区设置:UTC+2。正确的做法是什么?
谢谢!
当前回答
下载最新的pytz文件(pytz-2019.3.tar.gz): https://pypi.org/simple/pytz/ 复制并解压到项目的site_packages目录 在CMD中进入解压文件夹并运行: Python setup.py安装 TIME_ZONE = 'Etc/GMT+2'或国家名称
其他回答
要从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'})
从tzinfo数据库中选择一个有效的时区。它们倾向于采用例如Africa/Gaborne和US/Eastern的形式
找到与您最近的城市相匹配的城市,或者与您的时区相匹配的城市,然后将TIME_ZONE的值设置为匹配。
这对我来说很好(我仍然在本地测试应用程序)。 在settings.py文件类型中:
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Beirut'
USE_I18N = True
USE_L10N = True
USE_TZ = False
#使用您自己的TIME_ZONE: https://gist.github.com/heyalexej/8bf688fd67d7199be4a1682b3eec7568
有效的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
Change the TIME_ZONE to your local time zone, and keep USE_TZ as True in 'setting.py': TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = True This will write and store the datetime object as UTC to the backend database. Then use template tag to convert the UTC time in your frontend template as such: <td> {% load tz %} {% get_current_timezone as tz %} {% timezone tz %} {{ message.log_date | time:'H:i:s' }} {% endtimezone %} </td>
或者简洁地使用模板过滤器:
<td>
{% load tz %}
{{ message.log_date | localtime | time:'H:i:s' }}
</td>
您可以在官方文档中查看更多详细信息:默认时区和当前时区 当支持时区时,Django在数据库中存储UTC格式的datetime信息,在内部使用时区感知的datetime对象,并在模板和表单中将它们转换为最终用户的时区。