web-dev-qa-db-ja.com

日付と時間帯の処理の違い

タイムゾーンの処理にはいくつかのオプションがあります。サイトのタイムゾーン、日付の時刻、ユーザーのタイムゾーン、UTC、タイムゾーン変換なしです。それらの違いは何ですか?

1つの例は、世界中の誰もが同時に体験するテレビ放送です。ユーザーのタイムゾーンは正しいのでしょうか?放送局がニューヨークに住んでいる間に午後8時を置くと、カリフォルニアの誰かが午後5時にこれを経験するでしょう。

あるいは、ニューヨーク市で詩のスラムが起こっており、それを体験したい人は物理的に午後8時にそこにいる必要があります。つまり、カリフォルニアでは午後5時に行われる可能性がありますが、カリフォルニアの人。重要なのは、彼らがニューヨークの午後8時の場所にいるということです。そのため、ユーザーがどこにいても、タイムゾーンのどの時間に詩のスラムが行われていても、時間は変更されません。

9
Adam S

日付モジュールのドキュメントページ は、5つのオプションの違いをかなりよく説明しています。

そのページから:

フィールドのタイムゾーン処理には、5つのオプションがあります。

  1. サイトのタイムゾーン-フィールドにデータを入力すると、入力されたデータはサイトのタイムゾーンであると見なされます。データがデータベースに保存されると、UTCに変換されます。データベースから取得されると、ユーザー設定可能なタイムゾーンが有効になっている場合、データは匿名ユーザーの場合はサイトのタイムゾーンに、ログインユーザーの場合はユーザーのタイムゾーンに変換されます。
  2. 日付のタイムゾーン-このオプションを有効にすると、日付フィールドに選択ボックスが追加され、入力した日付のタイムゾーンを明示的に指定します。日付がデータベースに保存されるとき、日付は変換されず、タイムゾーン情報は日付とともに保存されます。データベースから取得した場合、変換は行われず、日付は入力したとおりに表示されます。
  3. ユーザーのタイムゾーン-フィールドにデータを入力するとき、入力されたデータはユーザーのタイムゾーンであると想定されます。データがデータベースに保存されると、UTCに変換されます。データベースから取得されると、ユーザー設定可能なタイムゾーンが有効になっている場合、データは匿名ユーザーの場合はサイトのタイムゾーンに、ログインユーザーの場合はユーザーのタイムゾーンに変換されます。
  4. [〜#〜] utc [〜#〜]-フィールドにデータを入力する場合、入力されたデータはUTCタイムゾーンであると想定されます。データがデータベースに保存されると、UTCに変換されます(変換は必要ありません)。データベースから取得されると、ユーザー設定可能なタイムゾーンが有効になっている場合、データは匿名ユーザーの場合はサイトのタイムゾーンに、ログインユーザーの場合はユーザーのタイムゾーンに変換されます。
  5. タイムゾーン変換なし-データベースに保存するときに、入力した日付は変換されません。データベースから取得した場合、データは変換されず、入力したとおりに表示されます。
13
jhedstrom