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

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

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。因此,雖然日期字串使用“Z”後綴來表示 UTC,但 SimpleDateFormat 物件會在 IST 中解析它。

解決問題

要解決此問題並確保解析的日期以UTC 格式顯示,將SimpleDateFormat 的時區明確設定為GMT使用:

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

透過將時區設定為GMT,您可以告訴SimpleDateFormat 以UTC格式解析日期字串,即使它具有“Z”後綴。這保證了解析的日期在 UTC 中正確顯示。

以上是為什麼 SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') 顯示 IST 而不是 UTC?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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