ホームページ >Java >&#&チュートリアル >特定のタイムゾーンに変換すると、Java コードで間違った時刻が表示されるのはなぜですか?それを修正するにはどうすればよいですか?

特定のタイムゾーンに変換すると、Java コードで間違った時刻が表示されるのはなぜですか?それを修正するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-29 14:53:02438ブラウズ

Why is my Java code showing an incorrect time when converting to a specific timezone, and how can I fix it?

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

現在のシステムの日付と時刻を特定のタイムゾーンに変換しようとすると、予想される出力と、目的のタイムゾーンでの実際の時刻との間に不一致が発生しました。この問題に対処するために、ご提供いただいたコードを詳しく調査し、時差の潜在的な原因を特定します。

このコードでは、Calendar クラスと SimpleDateFormat クラスを使用して日付と時刻の操作を処理します。現在時刻を currentdate に設定し、フォーマッタ オブジェクトを使用して文字列としてフォーマットします。次に、ターゲットのタイムゾーン (この場合は CST) の TimeZone オブジェクトを作成し、それをフォーマッタのタイムゾーンとして設定します。最後に、書式設定された日付文字列を解析して、指定されたタイムゾーンでの結果の日付を取得します。

この不一致は、フォーマッタが日付をターゲット タイムゾーンに変換する前にローカル タイムゾーンで書式設定するため発生します。これを考慮するには、ローカル タイムゾーンとターゲット タイムゾーンの間のオフセットの差を加算または減算して、時刻を明示的に調整する必要があります。

正しい時刻変換を提供する更新されたコード スニペットは次のとおりです。

<code class="java">// Create a calendar and set it to the local timezone
Calendar calendar = Calendar.getInstance();
TimeZone fromTimeZone = calendar.getTimeZone();

// Create a calendar for the target timezone
TimeZone toTimeZone = TimeZone.getTimeZone("CST");

// Convert the current time to the local timezone
calendar.setTimeZone(fromTimeZone);
calendar.add(Calendar.MILLISECOND, fromTimeZone.getRawOffset() * -1);
if (fromTimeZone.inDaylightTime(calendar.getTime())) {
    calendar.add(Calendar.MILLISECOND, calendar.getTimeZone().getDSTSavings() * -1);
}

// Convert the time to the target timezone
calendar.add(Calendar.MILLISECOND, toTimeZone.getRawOffset());
if (toTimeZone.inDaylightTime(calendar.getTime())) {
    calendar.add(Calendar.MILLISECOND, toTimeZone.getDSTSavings());
}

// Get the final date and time in the target timezone
Date theResult = calendar.getTime();

System.out.println("The current time in India is  :: " + currentdate.getTime());
System.out.println("The date and time in :: " + toTimeZone.getDisplayName() + " is ::" + theResult);</code>

タイムゾーン オフセットに従って時間を調整することで、指定したタイムゾーンで正しい日付と時刻を取得できるようになります。

以上が特定のタイムゾーンに変換すると、Java コードで間違った時刻が表示されるのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。