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
クラス内の時間帯があります。内部的に使用されていますが、ここでの議論とは無関係です。これらの古いレガシーの日時クラスは非常に混乱する混乱です。
どのようにタイムゾーンを決定しますか? 'Date'は' getTimeZone'メソッドを持っていません( 'getTimeZoneOffset()'は非推奨です)。 –
私が知りたいのは、新しいDate()を印刷している小さなプログラムを実行しようとすると、My InstanceがISTに設定されていても、UTCで時刻が表示されていることです。私の日付オブジェクトを追加Javaコードを追加せずにISTで時間を与えるにはどうすればよいですか?なぜ新しいDate()がインスタンスに設定されたタイムゾーンに基づいてISTで時間を与えることができないのですか? –
私はもっとコードを追加する必要があると思います。今ではあなたはそれに慣れています。代わりに、従来の '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)) –