0

私はSOでいくつかの関連する質問を見ました(これともちろん、これのような)...本質的に、私が望むのは、日付をUTCとして保存し、アプリケーションユーザーに日付を表​​示したいタイムゾーンを選択させることです日時
フィールドは基礎となる JDBC ドライバーの影響を受けているように見えるので、これが UTC 日時を格納する方法として受け入れられるかどうか疑問に思います。

  • MySQL とアプリケーション サーバー マシンの両方を UTC タイム ゾーンに設定します (分離する必要はありません)。
  • MySQL と JVM の両方が、基礎となるシステム時刻設定を取得する必要があります (特に指示がない場合)。
  • DATETIMEMySQL 側でテーブル列を使用する
  • Hibernate側で対応するマッピングとして使用しますjava.util.Date(私java.sql.Timestampも使用できると思います)
  • 日時フィールドの解釈をアプリケーションに任せる - つまり、ユーザーに好みのタイムゾーンを選択させる

これでよろしいですか?

編集
明確にするために-ここでは、サーバー上で厳密に作成されたタイムスタンプを参照することを意味していました(egdate-time of record creation)。そのため、アプリケーション サーバーはDateオブジェクトをインスタンス化します (new Date() はサーバー上の現在の日時に等しく、これは実際にはタイム ゾーンに依存しません)。
クライアントユーザーが検索/フィルタリングの目的で日付を指定したい場合、ここでクライアントローカル時間から UTC への変換が行われます。IMHO...

4

2 に答える 2

3

マシンのタイムゾーン設定に依存しない別の簡単なアプローチをお勧めします。

  • サーバー マシンのタイムゾーンを設定する代わりに、JVM のタイムゾーンを設定します。これは、システム プロパティを介して行うことができます。Windows の例では次のようになります。
set JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=GMT
  • MySQLの場合、これを行うためのリファレンスは次のとおりです
  • これで、すべての日時がGMTであることを確認してください
  • タイムゾーンを構成可能なプロパティとして保持するか、ユーザーに依存することもできます。したがって、ユーザーが異なる地域に属している場合は、各ユーザーのタイムゾーンを保存します。
  • 日付が必要な場合はいつでも、データベースから日付を選択した後、タイムゾーンを適用して正しい時刻を取得します。
  • このアプローチの利点は、すべてのタイムゾーン ユーザーに対して機能することです。つまり、ユーザーはタイムゾーンごとに正しい時間を表示します。
于 2013-08-08T12:43:25.567 に答える
0

locales国際化の実装に 使用します。

于 2013-08-08T12:38:18.657 に答える