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

タイムゾーン間で Java 日付/時刻オブジェクトを正確に変換するにはどうすればよいですか?

DDD
リリース: 2024-11-28 11:14:15
オリジナル
662 人が閲覧しました

How Can I Accurately Convert Java Date/Time Objects Between Time Zones?

Java での日付/時刻の特定のタイムゾーンへの変換

問題:

からの日付と時刻の変換Java では、あるタイムゾーンから別のタイムゾーンへの移動は困難な場合があります。現在時刻を GMT から GMT 13 に変換するためにユーザーが提供したコードは簡単に見えますが、特定の時刻を設定する場合、同じアプローチは失敗します。ユーザーは、なぜこのような場合にローカル マシンのタイム ゾーンが使用されるのか疑問に思います。

解決策:

この混乱は、新しい Date オブジェクトを作成する際に、明示的なタイムゾーンの場合、時刻は UTC であるとみなされます。ただし、ミリ秒を使用して Calendar オブジェクトの時刻を設定する場合 (calendar.setTime(new Date(1317816735000L)) のように)、時刻がホスト マシンのタイム ゾーンにあることが前提となります。

Toこれを克服するには、時刻を書式設定する前に、SimpleDateFormat オブジェクトのタイム ゾーンを明示的に設定できます。

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date(1317816735000L));
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");

// Set the time zone for the formatter
sdf.setTimeZone(TimeZone.getTimeZone("GMT+13"));

// Format the time with the specified time zone
String newZealandTime = sdf.format(calendar.getTime());
ログイン後にコピー

Thisコードは、指定されたタイム ゾーン (GMT 13) の日付を文字列として返します。

カスタム日付/時刻変換の手順:

  1. カレンダーの作成
  2. を使用して初期タイムゾーンを指定します。 sdf.setTimeZone(TimeZone.getTimeZone("GMT")).
  3. sdf.format(calendar.getTime()) を使用して時刻をフォーマットします。
  4. 目的のタイムゾーンを SimpleDateFormat オブジェクトに設定しますsdf.setTimeZone(TimeZone.getTimeZone("GMT 13")).
  5. 新しいタイムゾーンを使用して時間を再フォーマットし、変換された値を取得します。

以上がタイムゾーン間で Java 日付/時刻オブジェクトを正確に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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