4

私のアプリ内では、通常の日時オブジェクトを使用しています。私のテンプレートでは:

{% load tz %}

{{datetimeobject|timezone:"Europe/Paris"}}

{% timezone "Europe/Paris" %}
{{datetimeobject}}
{% endtimezone %}

これは次のようなものを出力します:

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

したがって、タイムゾーン フィルタは日付を調整しますが、タイムゾーン タグは調整しません。

何故ですか?また、タグを適切に使用するにはどうすればよいですか? 私の目標は、テンプレートに印刷されたすべての datetimeobject にフィルターを追加せずに、テンプレート全体のすべての datetimeobjects を調整することです。


編集

私は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)
4

1 に答える 1

3

「通常の日時オブジェクト」を使用していると言いますが、明らかにタイムゾーン対応ではなくタイムゾーンナイーブです。

タイムゾーン フィルターは「単一の値を任意のタイムゾーンに強制的に変換」しますが、タイムゾーン タグはタグまで現在のタイムゾーンを設定するだけendtimezoneです。

あなたdatetimeobjectはタイムゾーンにナイーブであり、タイムゾーンフィルターはそれをデフォルトのタイムゾーンでタイムゾーン対応の日時に変換し、フィルターに指定されたタイムゾーンで表します。

于 2013-01-31T23:54:51.793 に答える