2013-04-16 5 views
39

私のサーバーはロンドンにあります。私settings.pydjangoのtimezone.nowは適切な時間を表示しません

は私が持っている:

TIME_ZONE = 'Europe/Moscow' 
USE_TZ = True 

をしかし、私はこれを行うとき:

from django.utils import timezone 

print timezone.now().hour 

それはロンドンの時間を表示します。何が間違っていますか?

UPDATE:

>> timezone.now() 
datetime.datetime(2013, 4, 16, 12, 28, 52, 797923, tzinfo=<UTC>) 

tzinfo = <UTC>、ので、多分それは、ロンドン時間のない出力しますが、UTCの0時?とにかく、どのようにジャンゴはモスクワの時間を表示するように?

また、テンプレートをnow = timezone.now()でレンダリングすると、

{{ now.hour }}プリントは、例えば、12(ロンドン時間)

{{ now|date:"G" }}プリント16(モスクワ時間)

+0

正しい設定が読み込まれていますか? 'django.confのインポート設定から'をチェックしてください。 print settings.TIME_ZONE' –

+0

@DanielHepper、 'Europe/Moscow'を印刷します – imkost

答えて

61

"Usage" section of the Django docsに質問#2を参照してください。

+1

auto_add_nowをローカルタイムに設定する方法を教えてください。どうもありがとうございました! – Jacky

+8

ちょっと遅れましたが、これはうまくいくはずです: created = models.DateTimeField(デフォルト= lambda:timezone.localtime(timezone.now())) – jeverling

+3

@jeverling Django 1.7以降、モデルのデフォルトでlambdaを使用しないほうがいいです移行によってサポートされていない)。この場合、関数を定義して、それを呼び出し可能関数として渡す必要があります。[here](here)(http://stackoverflow.com/a/12654998) – sonderlain

関連する問題