タイムゾーン変換: 現在のタイムゾーンを超えて
ソフトウェア開発では、異なるタイムゾーン間で日付と時刻を変換する必要があることがよくあります。ローカルのタイムゾーンから別のタイムゾーンに変換するのは簡単ですが、2 つの異なるタイムゾーン間の変換には同じことが当てはまらない場合があります。
課題
問題は、 Java の java.util.Date クラスには明示的なタイムゾーン仕様がありません。 toString メソッドでデフォルトの JVM タイムゾーンを使用しているように見えますが、これにより、異なるタイムゾーン間で変換するときに不正確になる可能性があります。
解決策: 最新の日付/時刻 API を採用する
これらの落とし穴を回避するには、java.util.Date や Calendar などのレガシー API を放棄し、次のような最新の代替 API を優先することが重要です。 java.time パッケージ (Java 8 で導入) または Joda-Time.
java.time
java.time は、日付と時刻を操作するための直感的な API を提供します。あるタイムゾーンから別のタイムゾーンに変換するには、ZoneId オブジェクトを使用してソース タイムゾーンとターゲット タイムゾーンを指定するだけです。 ZonedDateTime クラスは、関連付けられたタイムゾーンで特定の瞬間を表します。以下に例を示します。
ZonedDateTime nowAuckland = ZonedDateTime.now(ZoneId.of("Pacific/Auckland")); ZonedDateTime nowKolkata = nowAuckland.withZoneSameInstant(ZoneId.of("Asia/Kolkata"));
Joda-Time
Joda-Time は、堅牢な日付/時刻 API も提供します。 java.time と同様に、DateTimeZone オブジェクトを使用してタイムゾーンを指定し、DateTime クラスを使用して特定の時刻を表すことができます。
DateTimeZone zoneLondon = DateTimeZone.forID("Europe/London"); DateTimeZone zoneKolkata = DateTimeZone.forID("Asia/Kolkata"); DateTime nowLondon = DateTime.now(zoneLondon); DateTime nowKolkata = nowLondon.withZone(zoneKolkata);
これらの最新の API を利用することで、異なるタイムゾーン間で効率的に変換を行うことができ、タイムゾーン間の変換を回避できます。従来の java.util.Date クラスに関連する落とし穴。
以上がJava でタイムゾーン間を正確に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。