1

Java のデフォルトのタイムゾーンを設定するより良い方法を探しています。現在、DB2 データベースにアクセスして現在のタイムゾーンを取得していますが、これはタイムゾーン名ではなく、現在の時間/分のオフセット値です。その値を取得して、「GMT-07:00」のような ID を作成します。

これにより、次の 2 つの問題が発生するようです。

  1. DST の開始/終了のために必ずリセットする必要があります。たとえば、データベースにクエリを実行し、タイムゾーンを設定するスケジュールされたタスクをセットアップしました。迷惑。
  2. (まだ)不明な理由により、スケジュールされたタスクが間違ったタイムゾーンを設定することがあります。

DB2が常に正しい値を返すと仮定すると、「GMT-07:00」が曖昧で、Java/そのタイムゾーンdb/OSの間で、テーブルから異なる値を抜き取ることしか想像できません。

「GMT-07:00」のような文字列を計算した後、コードは次のようになります。

 String timezoneGMTOffsetString = "GMT-07:00";
 TimeZone localTimeZone = TimeZone.getTimeZone(timezoneGMTOffsetString);
 TimeZone.setDefault(localTimeZone);
 System.setProperty("user.timezone", timezoneGMTOffsetString);

-Duser.timezone="America/Los_Angeles"外部で値を設定し、 Tomcat の起動時に使用する必要があると考えています。そして、スケジュールされたジョブを破棄できます!

何かアドバイス?Java 6.0_26

4

1 に答える 1

0

推奨されるソリューションは、常に UTC および UTC から隠蔽されています。変換にはjoda-timeライブラリを使用します。

于 2012-08-01T20:56:28.127 に答える