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

SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') が UTC ではなく IST を表示するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-16 10:57:11762ブラウズ

Why Does SimpleDateFormat(

SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") タイムゾーンを IST として表示します

SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")コンストラクターは、ISO-8601 形式の日付文字列を解析するように設計されています。ただし、接尾辞「Z」だけでは、解析される日付のタイムゾーンは設定されません。

この問題は、この形式を使用して「2013-09-29T18:46:19Z」のような日付文字列を解析するときに発生します。 「Z」はズールー時間 (UTC) を表すため、解析された日付が UTC として表示されることが期待できます。ただし、IST (インド標準時) タイムゾーンが表示されています。

問題を理解する

ここで重要なのは、タイムゾーンを明示的に設定していないことです。 SimpleDateFormat オブジェクトのタイムゾーン。その結果、デフォルトは JVM のデフォルトのタイムゾーンになります。この場合、おそらく IST になります。したがって、日付文字列では UTC を示すために「Z」接尾辞が使用されますが、SimpleDateFormat オブジェクトはそれを IST で解析します。

問題の解決

この問題を解決するには、解析された日付が UTC で表示されていることを確認し、SimpleDateFormat のタイムゾーンを明示的に GMT に設定します。 using:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));

タイムゾーンを GMT に設定すると、接尾辞「Z」が付いている場合でも日付文字列を UTC で解析するように SimpleDateFormat に指示します。これにより、解析された日付が UTC で正しく表示されることが保証されます。

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

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