2009-05-15 10 views
5

、私はそのような私のモデルでは、自動更新の日付/時間を記憶しています:GAEでは、適切なクライアントのTimeZoneに基づいて日付を表示するにはどうすればよいですか?私はGoogle App Engineアプリケーションで

class MyModel(db.Model): 
    date = db.DateTimeProperty(auto_now_add=True) 

しかし、その日付/時刻が、サーバーのローカル時間で、それによると、時間ですゾーン。

ウェブページに表示したい場合は、クライアントタイムゾーンでどのようにフォーマットできますか?

また、どのタイムゾーンでGoogleサーバーがわかっていますか?

+0

は、あなたがロンドンとして、カリフォルニアのような表示を表示する、またはユーザーが決めるようにしたいですか? –

+0

これは良い質問です...私の場合は、http://build-status.appspot.com/にブラウザを使って現地時間を表示します。 – paulgreg

答えて

5

Pythonの時間()にかかわらず、サーバーがであるものの時間帯のUTCを返しタイムゾーン()とTZNAME()にオフセットを、それぞれ、あなたを与えるだろう。サーバー上のローカル時刻、およびタイムゾーンの名前とタプルとしてのDSTタイムゾーン。 GAEはこの投稿時点でPython 2.5.xを使用しています。 Pythonの時間関数hereのドキュメントを参照してください。質問の最初の部分については

あなたは、サーバー上のコードで日付をフォーマット、またはクライアント上のコードを持つことができます。あなたは、サーバー上でフォーマットした場合

  • 、あなたは

    • 要求元のIPアドレス
    • のタイムゾーンを使用することができます登録して、あなたのタイムゾーンを与え、それを格納し、使用するユーザーを要求クライアントの希望時間帯は、要求の一部であるように、格納された値は
    • は、GETやPOSTで(隠された?)フィールドを使用し
  • クライアントでフォーマットする場合は、数行のJavaScriptを記述する必要があります。この手順は、「日付(utctime)を使用してUTCから日付を作成し、それを文書に埋め込む」のようなものです。デフォルトでは、JavaScriptの日付は、どのように初期化されたかにかかわらず、現地時間として表示されます。

JavaScriptを使用しないウェブページとは何ですか?クライアントでの書式設定をお勧めします。 2009年です! Marceloにいくつかの例があります。

1

ローカルとUTCの時間を求め、その違いを確認することで、サーバーのタイムゾーンを知ることができます。クライアントのタイムゾーンを調べるには、テンプレートにJavascriptを少し入れておく必要があります。 AJAXエクスチェンジでデルタを発見したら、タイムゾーンを操作するにはpytz、pytz.sourceforge.net/をお勧めします。あなたの質問の後半部分に関しては

2

トーマス・L Holadayのおかげで、私はJSONを使用して、たとえば、クライアントにそのUTC日付を送っしているので、[OK]を:

json = '{"serverUTCDate":new Date("%s")}' % date.ctime() 

をそして、クライアント側では、多数の追加/削除そのようなユーザーのタイムゾーンに応じ秒:カリフォルニアのコーヒートレーダーがロンドン時間に設定し、自分のマシンを持っている場合

var localDate = serverUTCDate.getTime() - (new Date()).getTimezoneOffset()*60000; 
関連する問題