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中文網其他相關文章!