用于调整模板中打印的日期的 Pytz 时区标签



在我的应用程序中,我使用普通的日期时间对象。在我的模板中:

{% load tz %}
{{datetimeobject|timezone:"Europe/Paris"}}
{% timezone "Europe/Paris" %}
{{datetimeobject}}
{% endtimezone %}

这将打印如下内容:

Dec. 5, 2012, 4 p.m.
Dec. 5, 2012, 3 p.m.

因此,时区过滤器会调整日期,但时区标签不会。

为什么?我怎样才能正确使用标签?我的目标是调整整个模板中的所有日期时间对象,而无需向模板中打印的每个日期时间对象添加过滤器。


编辑

我试图让我的日期对象知道时区:

offset = timezone('Europe/London')
datetimeobj.replace(tzinfo=offset)

但这并没有帮助 - 仍然是以前的代码,但 tz 知道日期时间对象是:

Dec. 5, 2012, 4 p.m.
Dec. 5, 2012, 3 p.m.

已解决:我在上面的代码中有一个错误 - 应该是:

offset = timezone('Europe/London')
datetimeobj = datetimeobj.replace(tzinfo=offset)

你说你使用"正常的日期时间对象",但显然它们是时区幼稚的,而不是时区感知的。

时区

过滤器"强制将单个值转换为任意时区",而时区标签仅设置当前时区,直到endtimezone标签。

您的datetimeobject是时区幼稚的,时区筛选器会将其转换为具有默认时区的时区感知日期时间,然后以提供给筛选器的时区表示它。

相关内容

  • 没有找到相关文章

最新更新