ホームページ >Java >&#&チュートリアル >SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') が UTC ではなく IST を表示するのはなぜですか? それを修正するにはどうすればよいですか?

SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') が UTC ではなく IST を表示するのはなぜですか? それを修正するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-13 20:03:13443ブラウズ

Why Does SimpleDateFormat(

SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") 問題: IST タイムゾーンの表示

Java では、SimpleDateFormat クラスを使用すると、事前定義されたパターンに従って日付の書式設定と解析を行うことができます。パターン「yyyy-MM-dd'T'HH:mm:ss'Z'」を使用する場合、UTC タイムゾーンの日付と時刻を表すことが期待されます。ただし、このような文字列を解析するときに問題が発生します。

次のコードを考えてみましょう。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Date date = sdf.parse("2013-09-29T18:46:19Z");
System.out.println(date);

期待される出力は UTC タイムゾーンの日付と時刻になります。ただし、多くのユーザーは、日付と時刻が IST (インド標準時) タイムゾーンで表示されると報告しています。これにより、混乱と誤った日付処理が発生します。

解決策: タイムゾーンを明示的に設定します

この問題は、SimpleDateFormat コンストラクターが日付パターンを初期化するだけで、日付パターンを設定しないために発生します。タイムゾーンを明示的に指定します。これを修正するには、タイムゾーンを手動で UTC に設定する必要があります。その方法は次のとおりです。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = sdf.parse("2013-09-29T18:46:19Z");
System.out.println(date);

タイムゾーンを GMT に設定すると、SimpleDateFormat パーサーは入力文字列を正しく解釈し、予想される UTC タイムゾーンで日付と時刻を表示します。

以上がSimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') が UTC ではなく IST を表示するのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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