首頁 >後端開發 >Golang >為什麼 Go 的 time.Parse() 無法準確解析時區標識符?

為什麼 Go 的 time.Parse() 無法準確解析時區標識符?

Barbara Streisand
Barbara Streisand原創
2024-12-01 06:33:14940瀏覽

Why Does Go's `time.Parse()` Fail to Parse Timezone Identifiers Accurately?

Go 的Time.Parse() 不解析時區標識符

在提供的程式碼中, time.Parse() 函數用於將字串解析為time.Time 物件。但是,函數不會解析字串中的時區標識符,導致時間物件不準確。

根據 time.Parse() 文檔,該函數的預設行為是使用當遇到像 MST 這樣的區域縮寫時,當前位置的時區。這解釋了為什麼輸出中的第一行和第三行不正確,因為目前位置設定為 CST。具體來說,“EDT”字串被解釋為“東部夏令時間”,並使用 CST 的時區偏移量,即 -0500。

為了避免此問題並正確解析時區標識符, time.ParseInLocation可以使用()函數。此函數要求您指定解析時間字串時要使用的位置。在這種情況下,「America/New_York」位置可用於正確解析「EDT」時區識別碼。

或者,可以修改time.Parse() 中的佈局字串以明確指定中的偏移量佈局字串本身,例如:

format := "2006 01 02 15:04 -0400 MST"
tn, _ := time.Parse(format, date)

使用其中一種方法將確保time.Parse() 準確解析時區標識符並建立一個具有正確偏移量的time.Time 物件。

以上是為什麼 Go 的 time.Parse() 無法準確解析時區標識符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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