1

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

{% load tz %}

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

仍然给了我UTC的价值

然而

{{ value|localtime }} 

使用我的本地时区设置给我价值

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

知道我做错了什么吗?

4

2 回答 2

0

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

在此处查看第一个警告

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

于 2013-01-22T22:28:37.170 回答
0

我创建了一个简单的中间件来为你处理所有这些东西:

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 数据库的路径:

    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. 多田!

于 2013-07-17T06:33:18.920 回答