我正在尝试在我的模板中将 utc 时间转换为本地时间,并且出于某种原因这样做:
{% load tz %}
{% localtime on %}
{{ value }}
{% endlocaltime %}
仍然给了我UTC的价值
然而
{{ value|localtime }}
使用我的本地时区设置给我价值
将 settings.py 中的 USE_TZ 设置为 True 似乎也无济于事
知道我做错了什么吗?
我正在尝试在我的模板中将 utc 时间转换为本地时间,并且出于某种原因这样做:
{% load tz %}
{% localtime on %}
{{ value }}
{% endlocaltime %}
仍然给了我UTC的价值
然而
{{ value|localtime }}
使用我的本地时区设置给我价值
将 settings.py 中的 USE_TZ 设置为 True 似乎也无济于事
知道我做错了什么吗?
{{ value }}
您尝试显示的日期/时间对象是一个简单的日期时间对象。天真的日期时间对象不会在模板标签中转换 - 您的第一个示例,但会在模板过滤器中转换 - 您的第二个示例。
“天真”与日期时间对象的创建方式有关。有关如何更改日期/时间对象时间感知的信息 - 允许它在模板标签中使用 - 请查看此线程
我创建了一个简单的中间件来为你处理所有这些东西:
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 数据库的路径:
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 %}
多田!