2010-12-04 6 views
3

タイムゾーン対応のWebアプリケーションを構築しています。そのためのベストプラクティスを探しています。タイムゾーン対応アプリケーションを構築する際のベストプラクティス

たとえば、タイムゾーンが設定されているユーザーAとユーザーBがあります。ユーザーAは時間を入力します。 (彼のタイムゾーンで)。これをどのようにDBに保存しますか?

  • [オプション1] UCTに格納された元のタイムゾーン
  • [オプション2] UCT時間で元の時間。

ユースケースは

  • ユーザーAは、この時間を表示する必要があります。
  • 今回は、ユーザーBを表示する必要があります。
  • 今回はAnonユーザーが表示される必要があります。
  • タイムゾーンの違いを計算する必要があります。

私は両方の方法の利点を見ることができます。私は特にこの質問への答えだけを探しているわけではありませんが、特にTimezoneを意識したWebアプリケーションを構築する方法についての情報です。

私はPythonを使用していますが、言語に依存しないヒントも探しています。

答えて

2

一般的に、時刻を共通形式(UTC)に変換して保存し、表示するときにユーザーの独自のタイムゾーンに変換する方が理にかなっていると思います。自分のIPアドレスに基づいて匿名ユーザーを推測したり、デフォルトのタイムゾーンに設定することができます。

もちろん、あなたが何をしているかによって異なります。多くの場合、絶対時間は重要です。テレビ会議がある場合、その開始時間は各時間帯の人々のために同じでなければならない。しかし、何かが現地時間で行われるケースはいくつかあります。たとえば、Earth Hourは、各時間帯で8.30-9.30pmです。

4

意味的には、あなたが操作するほとんどすべての時刻は絶対時間です(例えば、請求、作成と変更、最後に見たもの、APIスロットル、SO特典など)。それらは、UTCで保存されていなければならないので、あいまいさはありません。それ以外の場合、政府によってDSTルールが変更され、システムルールが更新されると、保存された値が意味を変更します。

時間と場所も参照している場合(例:ミーティング、カレンダー全般)、タイムゾーン名(UTCオフセットと同じではない)を含むRFC 3339に完全なシンボリック日付を格納できます。オンデマンドでUTCに変換します。