我在settings.py中设置了TIME_ZONE = 'America/Chicago'
的django项目。
我正在使用这样的日期:
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"
?
答案 0 :(得分:1)
这是一个python问题,您可以使用timedelta
变量为datetime
添加时间。例如
import datetime
b = datetime.datetime.now() + datetime.timedelta(hours=n)
或者您可以直接更改datetime
的时区,例如:
datetime.astimezone(GMT2())
或使用tzinfo
函数中的now
变量:
datetime.datetime.now(EST())
因此,在将某些内容传递给模板之前,必须完成这些更改。
答案 1 :(得分:0)