django 打印日期的时区设置
我有一个Django项目,在settings.py文件中设置了TIME_ZONE = 'America/Chicago'
。
我使用日期的方式是这样的:
from django.utils.dateparse import parse_datetime
import datetime
from datetime import datetime
dateobject = parse_datetime(some_string)
now = datetime.now()
if now > dateobject:
# do something
然后在模板中我使用:
dateobject|date:"d M Y H:i"
我想在所有的模板中显示不同的时区的日期(比如说加6小时)。但是我希望项目的时区保持为'America/Chicago',并且通过datetime.now()返回的日期也在这个时区。所以我只想把所有显示的日期调整为加6小时。请问我该怎么做呢?
编辑
好的,这个方法对我有效:
{% load tz %}
{{ datetimevalue|timezone:"Europe/Paris" }}
它打印的日期加了1小时。但是这个方法不行:
{% load tz %}
{% timezone "Europe/Paris" %}
{{ datetimevalue }}
{% endtimezone %}
它打印的日期没有变化。我需要为所有模板全局设置这个。请问我该怎么做?
我总是使用日期过滤器(dateobject|date:"d M Y H:i"
),所以有没有办法全局“钩住”这个过滤器,把它改成dateobject|timezone:"Europe/Paris"|date:"d M Y H:i"
呢?
2 个回答
0
2
这更像是一个关于Python的问题,你可以使用timedelta
这个变量来给datetime
加上时间。例如:
import datetime
b = datetime.datetime.now() + datetime.timedelta(hours=n)
或者你可以直接改变datetime
的时区,比如:
datetime.astimezone(GMT2())
或者在now
函数中使用tzinfo
变量:
datetime.datetime.now(EST())
所以这些更改必须在你把内容传递给模板之前完成。