1

これは私の最初の質問ですが、重要な質問です (そして奇妙な質問です)。私の英語がうまくない場合は申し訳ありませんが、あまり話せません。

Calendar.getInstance() を取得したいときに大きな問題があります。私はJBoss 3.2.5を使用しており、.warアプリ、Java 1.6.0.25(Java 1.7でも同じ問題が発生します)およびWindows 7 Enterpriseを作成しています。Java Web Start でアプリを実行します。

私のアプリケーションのコード(問題が発生する場所)は次のとおりです。

public static void main(final String args[]) {
    Calendar c = Calendar.getInstance();
    System.out.println(" >>>>>>>>>>>>>>>>>>> " + c.getTimeZone().getDisplayName());
    System.out.println(" >>>>>>>>>>>>>>>>>>> " + c.getTimeZone().getID());
    System.out.println(" >>>>>>>>>>>>>>>>>>> " + c.getTime());
    System.out.println(" ------------------- ");
      ...

ご覧のとおり、問題はアプリケーションの起動時です。

コントロール パネルで Java キャッシュを有効にすると (Java->General->Temp files->Configuration->Keep temporary files on my computer)、次の結果が得られます。

>>>>>>>>>>>>>>>>>>> Hora de Europa Central
>>>>>>>>>>>>>>>>>>> Europe/Paris
>>>>>>>>>>>>>>>>>>> Thu May 16 16:37:18 CEST 2013

しかし、Java キャッシュを無効にすると、結果は完全に異なります。次のようになります。

>>>>>>>>>>>>>>>>>>> Hora Universal Coordinada
>>>>>>>>>>>>>>>>>>> UTC
>>>>>>>>>>>>>>>>>>> Thu May 16 14:41:48 UTC 2013

それが私の問題です。最初は常に同じ結果が必要です。なぜなら、GMT+1 が必要だからです。夏なので、+1 エクストラがあり、次に GMT+2 があります。

次の文を呼び出すと、常に正しい TimeZone が得られます。

System.getProperty("user.timezone"));

これ:

Europe/Paris

この問題を解決する方法がわかりません。TimeZones、Calendars、DateFormats をキャストしようとしましたが、正しい時刻を取得できません。常に UTC 時刻を取得します。

Java 1.7 では動作が異なります。キャッシュを有効にしますが、クリーンな場合は動作が悪くなりますが、初回のみ、2 回目は正常に動作します (Java キャッシュを再度クリーンアップしない限り)。

これを修正するアイデアはありますか???

どうもありがとう!

4

0 に答える 0