3

TIME_ZONE = 'America/Chicago'私はsettings.pyに設定された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") を使用しているので、このフィルターをグローバルに「フック」して に変更する方法はありますdateobject|timezone:"Europe/Paris"|date:"d M Y H:i"か?

4

2 に答える 2

2

これはよりPythonの質問です。timedelta変数を使用して時間をに追加できますdatetime。例えば

import datetime
b = datetime.datetime.now() + datetime.timedelta(hours=n)

または、 のタイムゾーンを直接変更することもできますdatetime。次に例を示します。

datetime.astimezone(GMT2())

またはtzinfo、関数内の変数を使用してnow:

datetime.datetime.now(EST()) 

したがって、これらの変更は、テンプレートに何かを渡す前に行う必要があります。

于 2013-01-31T12:57:50.160 に答える
0

http://docs.djangoproject.com/en/dev/ref/settings/#time-zoneを参照してください。

{% now h:ia %}

これを試してみてください........

于 2013-01-31T14:02:30.850 に答える