【发布时间】:2013-01-16 02:59:42
【问题描述】:
在我的应用程序中,我使用普通的日期时间对象。在我的模板中:
{% load tz %}
{{datetimeobject|timezone:"Europe/Paris"}}
{% timezone "Europe/Paris" %}
{{datetimeobject}}
{% endtimezone %}
这会打印出类似这样的内容:
Dec. 5, 2012, 4 p.m.
Dec. 5, 2012, 3 p.m.
因此时区过滤器会调整日期,但时区标签不会。
这是为什么呢?以及如何正确使用标签?我的目标是调整整个模板中的所有日期时间对象,而不为模板中打印的每个日期时间对象添加过滤器。
编辑
我试图让我的 dateobjects 时区感知:
offset = timezone('Europe/London')
datetimeobj.replace(tzinfo=offset)
但这并没有帮助 - 仍然是以前的代码,但具有 tz 意识的 datetimeobject 是:
Dec. 5, 2012, 4 p.m.
Dec. 5, 2012, 3 p.m.
已解决:我在上面的代码中有错误 - 应该是:
offset = timezone('Europe/London')
datetimeobj = datetimeobj.replace(tzinfo=offset)
【问题讨论】:
-
我注意到你有
import tz文档有load tz是故意的吗? -
我已经加载了我的原始代码,对不起,我会编辑这个
-
datetimeobj.replace(tzinfo=zone)不正确,请改用zone.localize(datetimeobj, is_dst=None)(假设datetimeobj是一个简单的日期时间对象)或zone.normalize(datetimeobj.astimezone(zone))(假设时区感知日期时间对象)。见pytz.sourceforge.net -
阅读 the link I provided 以了解它何时、如何以及为什么会中断。
-
我建议直接使用timezone API of Django 并修改那里的示例。
标签: python django datetime pytz