問題:
からの日付と時刻の変換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) の日付を文字列として返します。
カスタム日付/時刻変換の手順:
以上がタイムゾーン間で Java 日付/時刻オブジェクトを正確に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。