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'') 顯示 IST 而不是 UTC,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!