Djangoは、前者は、ゾーン形式のタイムスタンプであると考えられている時間形式をマーキングすることなく、時間帯を指し、関連する時間及びnavie時間認識時間に分割されます。setting.pyファイルの枠組みでジャンゴ
LANGUAGE_CODE = ' EN-US ' #の最初に、 'UTC'イーストゾーン0(または西区0)作成時TIME_ZONEは、デフォルトでは、タイムゾーンを表し TIME_ZONE = ' アジア/上海' USE_I18N = 真 USE_L10N = 真 #USE_TZにします時間認識標識バンド形式の真の代表的な使用時 USE_TZを= TRUE
Pythonでは、時間の意識は、デフォルトのUTC東ゾーン0に設定されます。
たとえば、我々は次のようなデータを作成しました:
django.shortcuts インポート逆、レンダリング、リダイレクト から .modelsをインポートブックを から django.utils.timezoneの輸入今、localtimeの デフ:add_book(リクエスト) 場合 request.method == ' GET ' : リターンが(レンダリングリクエスト、「add_books.htmlを" ) 他: タイトル = request.POST.get(" BOOK_TITLE " ) の著者 = request.POST.get(" 著者:BOOK_AUTHOR ") 価格 = request.POST.get(" book_price " ) ブック =ブック(タイトル=タイトル、著者=著者、価格=価格、CREATE_TIME = NOW()) book.save() の戻りリダイレクト(逆(' インデックス'))
データベース時間に保存されています:
実際には、あなたは8時間後に、この時間よりリアルタイムに見ることができ、それは我々が東8地区にあるためであり、時間をDjangoのだろうが0東部地区に設定されている、東ゾーン0それはなぜでしょうか?
私たちは見てする必要があります
django.utils.timezone.now
この機能
デフ今(): "" " 戻る意識やナイーブdatetime.datetimeの、settings.USE_TZに応じて 。""" もしsettings.USE_TZ: #1 はtimeitショー24%が遅いdatetime.now(TZ = UTC)という 返す日時を。 。utcnow()を置き換える(tzinfoが= UTC) 他: 戻り datetime.now()
私たちは今、関数を呼び出すが、それは、django.utils.timezone.now機能で見ることができますが、この関数は本質的に、最初に決定します
値がtrueの場合USE_TZ UTCに変換する場合、date.now日時の時間帯で真であるだろう、falseの場合、日時、この時間を直接使用するので、2つのソリューションがあります:1、
USE_TZ値は、2、偽のローカルタイムゾーンを設定するには、時間によって東は0タイムゾーンの変換コスト地域をlocaltimeの。
最初のアプローチは、デプロイメントサーバーで実行可能ではない、ので、私たちは第二のアプローチをお勧めします、展開は、サーバー上のLinuxオペレーティングシステムを使用することは可能ではありません。
:次のように第二のアプローチは、
1セットにローカルタイムゾーンを、アジア/上海setting.py文書のローカルエリアを設定します
TIME_ZONE = ' アジア/上海'
次いで、テンプレートはモジュールをレンダリングTZ導入された場合、変換モジュールTZ LOCALTIMEを用いる方法。
{%が延びる' base.html '%} {%負荷のTZ%} {%ブロックタイトル%} 首页 {%の末端ブロック%} {%ブロックメイン%} <TABLE> <THEAD> <TR> <TH>序号</番目> <TH>书名</番目> <TH>作者</番目> <TH>价格(美元)</番目> <TH>上架时间</番目> </ TR> </ THEAD> <TBODY> {%のための書籍で書籍%} <TR> <TD> {{book.title}} </ TD> <TD> {{book.author}} </ TD> <TD> {{book.price}} $ </ TD> <TD> {{book.create_time | LOCALTIME}} </ TD> </ TR> {%ENDFOR%} </ TBODY> </ TABLE> {%の末端ブロック%}
最後に、フロントページの表示時間に、当社の東京時間は次のとおりです。