我正在尝试将utc次转换为我的模板中的本地时间,并出于某种原因这样做:
{% load tz %}
{% localtime on %}
{{ value }}
{% endlocaltime %}
仍然给我utc的值
然而
{{ value|localtime }}
使用我当地的时区设置
给我一个值将settings.py中的USE_TZ设置为True似乎也无效
知道我做错了什么?
答案 0 :(得分:0)
您尝试显示的{{ value }}
日期/时间对象是一个天真的日期时间对象。天真的日期时间对象不会在模板标签中转换 - 您的第一个示例,但会在模板过滤器中转换 - 您的第二个示例。
“Naive”与datetime对象的创建方式有关。有关如何更改日期/时间对象时间的信息 - 允许在模板标签中使用 - 请查看This Thread
答案 1 :(得分:0)
我已经创建了一个简单的中间件来为您处理所有这些内容:
https://github.com/Miserlou/django-easy-timezones
只需安装并按照说明完成即可!
安装django-easy-timezones
pip install django-easy-timezones pytz pygeoip
将“easy-timezones”添加到您的INSTALLED_APPS设置中:
INSTALLED_APPS = (
...
'easy-timezones',
)
将EasyTimezoneMiddleware添加到MIDDLEWARE_CLASSES
MIDDLEWARE_CLASSES = (
...
'easy-timezones.middleware.EasyTimezoneMiddleware',
)
在设置文件中添加MaxMind GeoIP database的路径:
GEOIP_DATABASE = '/path/to/your/geoip/database/GeoIP.dat'
在模板中启用本地时间。
{% load tz %}
The UTC time is {{ object.date }}
{% localtime on %}
The local time is {{ object.date }}
{% endlocaltime %}
多田!