ホームページ > Java > &#&チュートリアル > Java でタイムゾーン間を正確に変換するにはどうすればよいですか?

Java でタイムゾーン間を正確に変換するにはどうすればよいですか?

DDD
リリース: 2024-12-10 04:50:14
オリジナル
822 人が閲覧しました

How Can I Accurately Convert Between Time Zones in Java?

タイムゾーン変換: 現在のタイムゾーンを超えて

ソフトウェア開発では、異なるタイムゾーン間で日付と時刻を変換する必要があることがよくあります。ローカルのタイムゾーンから別のタイムゾーンに変換するのは簡単ですが、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート