首頁 >Java >java教程 >為什麼 SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') 顯示 IST 而不是 UTC,如何修復它?

為什麼 SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') 顯示 IST 而不是 UTC,如何修復它?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn