【问题标题】:django localtimedjango当地时间
【发布时间】:2013-01-06 07:20:38
【问题描述】:

我正在尝试在我的模板中将 utc 时间转换为本地时间,并且出于某种原因这样做:

{% load tz %}

{% localtime on %}
{{ value }}
{% endlocaltime %}

仍然给我 utc 的值

然而

{{ value|localtime }} 

使用我的本地时区设置为我提供值

将 settings.py 中的 USE_TZ 设置为 True 似乎也无济于事

知道我做错了什么吗?

【问题讨论】:

    标签: django django-timezone


    【解决方案1】:

    您尝试显示的{{ value }} 日期/时间对象是一个简单的日期时间对象。天真的日期时间对象不会在模板标签中转换 - 您的第一个示例,但会在模板过滤器中转换 - 您的第二个示例。

    See the first warning here

    “天真”与日期时间对象的创建方式有关。有关如何更改日期/时间对象时间感知的信息 - 允许它在模板标签中使用 - 请查看 This Thread

    【讨论】:

      【解决方案2】:

      我创建了一个简单的中间件来为您处理所有这些事情:

      https://github.com/Miserlou/django-easy-timezones

      只需安装它并按照说明操作即可!

      1. 安装 django-easy-timezones

        pip install django-easy-timezones pytz pygeoip

      2. 将“easy-timezones”添加到您的 INSTALLED_APPS 设置中,如下所示:

        INSTALLED_APPS = ( ... 'easy-timezones', )

      3. 将 EasyTimezoneMiddleware 添加到您的 MIDDLEWARE_CLASSES

        MIDDLEWARE_CLASSES = ( ... 'easy-timezones.middleware.EasyTimezoneMiddleware', )

      4. 在设置文件中添加MaxMind GeoIP database 的路径:

        GEOIP_DATABASE = '/path/to/your/geoip/database/GeoIP.dat'

      5. 在您的模板中启用本地时间。

        {% load tz %} The UTC time is {{ object.date }} {% localtime on %} The local time is {{ object.date }} {% endlocaltime %}

      6. 多田!

      【讨论】:

        猜你喜欢
        • 2018-04-15
        • 2018-03-10
        • 2012-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-15
        • 1970-01-01
        相关资源
        最近更新 更多