如何在Django中设置时区



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

TIME_ZONE = 'UTC'

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

TIME_ZONE = 'UTC+2'

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

谢谢!

以下是有效时区列表:

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

你可以使用

TIME_ZONE = 'Europe/Istanbul'

对于UTC+02:00

要从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/GaborneUS/Eastern 等形式

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

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

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

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

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

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

以下是所有有效时区的列表

您可以在您的设置中更改时区.py,如下

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Kolkata'
USE_I18N = True
USE_L10N = True
USE_TZ = True

这对我来说很好(我仍在本地测试应用程序)。在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

通用解决方案,基于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'

+/-是有意切换的。

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

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

    TIME_ZONE = 'Europe/London'
  1. 将TIME_ZONE更改为您的本地时区,并在'setting.py'中保持USE_TZ为True:

    TIME_ZONE="亚洲/上海"

    USE_I18N=真

    USE_L10N=真

    USE_TZ=真实

  2. 这将以UTC的形式将日期时间对象写入并存储到后端数据库。

  3. 然后使用模板标签在前端模板中转换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>
  1. 您可以在官方文档中查看更多详细信息:默认时区和当前时区

    当启用对时区的支持时,Django会在数据库中存储UTC格式的日期时间信息,在内部使用可识别时区的日期时间对象,并以模板和表单将其转换为最终用户的时区。

添加首选TIME_ZONE并将USE_TZ设置为False,就像下面的一样

  • TIME_ZONE='亚洲/加尔各答'
  • USE_TZ=错误

希望它能起作用。

以下是有效时区列表:

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

您可以使用达卡时区

TIME_ZONE = 'Asia/Dhaka'

对于UTC+06:00(达卡或阿斯塔纳)

  1. 从以下位置下载最新的pytz文件(pytz-2019.3.tar.gz):

    https://pypi.org/simple/pytz/
    
  2. 将其复制并提取到您的项目上的site_packages目录

  3. 在cmd中,转到提取的文件夹并运行:

    python setup.py install
    
  4. TIME_ZONE = 'Etc/GMT+2'或国家名称

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

TIME_ZONE = 'Asia/Kolkata'

相关内容

  • 没有找到相关文章

最新更新