2017-01-10 1 views
0

シンガポールゾーンでec2インスタンスを実行しています。デフォルトでは、このインスタンスのタイムゾーンはUTCです。だから私はそれをISTに設定しました。このインスタンスで実行されているアプリケーションは、データベースに保存するISTで時間を生成します。新しい日付()は、ISTCとして設定されているec2インスタンスのUTCで時刻を指定しています

つまり、ISTでの申請の返信時間の新しいDate()。しかし、それはまだ必要ではないUTCの時間を生成しています。

したがって、新しいDate()を作成する方法は、明示的なJavaコードを追加せずにec2インスタンスのISTで時間を与えますか?

+1

どのようにタイムゾーンを決定しますか? 'Date'は' getTimeZone'メソッドを持っていません( 'getTimeZoneOffset()'は非推奨です)。 –

+0

私が知りたいのは、新しいDate()を印刷している小さなプログラムを実行しようとすると、My InstanceがISTに設定されていても、UTCで時刻が表示されていることです。私の日付オブジェクトを追加Javaコードを追加せずにISTで時間を与えるにはどうすればよいですか?なぜ新しいDate()がインスタンスに設定されたタイムゾーンに基づいてISTで時間を与えることができないのですか? –

+1

私はもっとコードを追加する必要があると思います。今ではあなたはそれに慣れています。代わりに、従来の 'Date'クラスを削除し、代わりに[Java 8 Data&Time API](https://docs.oracle.com/javase/tutorial/datetime/)を使用することを検討してください([docs here ](https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)) –

答えて

1

は変数環境として-Duser.timezone="Asia/India"を設定したり、Datejava filename -Duser.timezone="Asia/India"

+0

それをしました。しかし、それでもUTCで時間が表示されています Tue Jan 10 10:12:49 UTC 2017ですが、ISTでこれが必要です –

+0

JVMの現在のデフォルトタイムゾーンを設定するのは、すべてのコードに影響する極端な状況そのJVM内で実行されているアプリケーション。また、JVM内のどのアプリケーションのコードでも、実行時にいつでも*デフォルトを再び変更することができます*。メソッドに引数として渡すことで、希望の/期待されるタイムゾーンを簡単に指定する方が簡単です。 –

1

java.time

ZonedDateTime.now( 
    ZoneId.of("Asia/Kolkata") 
) 

詳細

toString方法が紛らわしい適用使用して、端末からそのスイッチを使用してJavaアプリケーションを実行してみます文字列を生成する際のJVMの現在のデフォルトタイムゾーンこれは割り当てられたタイムゾーンを持っていると思うことにあなたを誤解させますが、^はしません。 Dateオブジェクトは実際にはUTCの値を表します。これらの面倒な古いレガシー日時クラスを避けるための多くの理由の1つ。

このクラスは現在、java.timeクラスに置き換えられています。

インスタントクラスは、瞬間をUTCで表します。

Instant instant = Instant.now(); 

希望のタイムゾーンに調整します。 ISTのように、3〜4文字の略語を使用しないでください。リアルタイムゾーンではありません。 real time zone namesを使用してください。

ZoneId z = ZoneId.of("Asia/Kolkata"); 
ZonedDateTime zdt = instant.atZone(z); 

この質問は本当に他の多くの複製です。さらに多くのディスカッションや例については、スタックオーバーフローを検索してください。

ホストオペレーティングシステムのタイムゾーンも、JVMのデフォルトのタイムゾーンも変更しないでください。実行時にJVM内の任意のアプリケーションの任意のスレッドの任意のコードによっていつでも変更できるデフォルトのタイムゾーンには依存しないでください。常に問題の解決されたjava.timeクラスを呼び出すときは、タイムゾーンにオプションの引数を指定してください。


^物事はさらに混乱させるためには、実際にはなくゲッターやセッターのない、Dateクラス内の時間帯があります。内部的に使用されていますが、ここでの議論とは無関係です。これらの古いレガシーの日時クラスは非常に混乱する混乱です。

関連する問題