ホームページ >Java >&#&チュートリアル >SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') が UTC ではなく IST を表示するのはなぜですか?
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 サイトの他の関連記事を参照してください。