Answers:
以下是有效时区的列表:
http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
您可以使用
TIME_ZONE = 'Europe/Istanbul'
适用于UTC + 02:00
要从tz数据库获取一组所有有效的时区名称(id),可以在Python中使用pytz
module:
>>> 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'})
pytz.common_timezones
。
从tzinfo数据库中选择一个有效的时区。他们往往采取的形式如Africa/Gaborne
和US/Eastern
找到一个与您最近的城市相匹配的城市,或者一个与您的时区相匹配的城市,然后将您的值设置TIME_ZONE
为match。
有效的timeZone值基于Linux和其他Unix系统使用的tz(时区)数据库。值是形式为“ Area / Location ”的字符串(xsd:string),其中:
区域是大陆或海洋的名称。当前区域包括:
位置是城市,岛屿或其他区域名称。
区域名称和输出缩写遵循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
将TIME_ZONE更改为您的本地时区,并在“ setting.py”中将USE_TZ保持为True:
TIME_ZONE ='亚洲/上海'
USE_I18N =真
USE_L10N =真
USE_TZ =真
这会将datetime对象作为UTC写入并存储到后端数据库。
然后,使用template标记将前端模板中的UTC时间转换为:
<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中,在内部使用可识别时区的日期时间对象,并将其以模板和形式转换为最终用户的时区。
从以下位置下载最新的pytz文件(pytz-2019.3.tar.gz):
https://pypi.org/simple/pytz/
复制并将其解压缩到您site_packages
项目的目录中
在cmd中,转到解压缩的文件夹并运行:
python setup.py install
TIME_ZONE = 'Etc/GMT+2'
或国家名称