0

クライアント サーバー ベースの Java アプリケーションがあります。クライアントは米国/太平洋タイムゾーンで実行され、サーバーは UTC で実行されます (データベースの時刻は UTC で保存されます)。

たとえば、日付を太平洋時間の 09:00 として保存すると、DB には UTC の 14:00 として保存されます。

この時間を DB から読み返すと、夏時間が適用され、09:00 時間ではなく 08:00 時間の太平洋時間に変換されるようになりました。

そのため、太平洋時間から UTC に変換する場合、夏時間は考慮されませんが、UTC から太平洋時間に戻す場合は適用されますが、これは一貫していません。

DB では、列の型は TIME で、Java ではそれを日付オブジェクトに読み込んでいます。

どうすればこれを処理できますか?

4

3 に答える 3

0

あなたができる最善のことは、タイムゾーンに関係なく、できるだけ多くの時間を処理することだと思います. たとえば、Unix エポック以降のミリ秒。次に、タイム ゾーン データをユーザーに表示する直前にのみ適用します。

したがって、この場合、サーバーに報告するとき、およびサーバーから取得するときに、現地時間の仮定を適用しないでください。このようにして、タイムゾーンやデータの DST 処理が一致しないことはありません。

于 2012-05-25T16:14:30.390 に答える
0

通常、DB サーバーは時刻、夏時間を適用するかどうか、UTC が標準であるタイムゾーンを決定します。

提案:

  1. タイムゾーン PST、EST などの別のフィールドを持つ文字列フィールドとして、クライアント側で時間を設定したい場合があります。
  2. タイムゾーン専用のフィールドを作成し、クライアント側に表示する時間を計算します。
于 2012-05-25T16:09:48.413 に答える
0

これはさておき、getLong手動で使用して Date オブジェクトを自分で構築することをお勧めします。

于 2012-05-25T17:40:14.483 に答える