我在 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 小时)的所有模板中显示日期。但我希望项目时区为“美国/芝加哥”,并且 datetime.now() 返回的日期在这个时区内。所以我只想将所有显示的日期更改为 +6 小时。我如何才能做到这一点?
编辑
好的,这对我有用:
{% load tz %}
{{ datetimevalue|timezone:"Europe/Paris" }}
它以 +1 小时打印日期。但这不起作用:
{% load tz %}
{% timezone "Europe/Paris" %}
{{ datetimevalue }}
{% endtimezone %}
它打印日期不变。我必须为所有模板全局设置它。我该怎么做?
我总是使用日期过滤器 (dateobject|date:"d M Y H:i"
) 所以也许有什么办法可以全局“ Hook ”这个过滤器以将其更改为 dateobject|timezone :"欧洲/巴黎"|日期:"d M Y H:i"
?
最佳答案
这更像是一个 python 问题,您可以使用 timedelta
变量将时间添加到 datetime
。例如
import datetime
b = datetime.datetime.now() + datetime.timedelta(hours=n)
或者您可以直接更改datetime
的时区,例如:
datetime.astimezone(GMT2())
或者使用 now
函数中的 tzinfo
变量:
datetime.datetime.now(EST())
因此,必须在将某些内容传递给模板之前完成这些更改。
关于python - 用于打印日期的 django 时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14625662/