首頁 >後端開發 >Golang >為什麼 Go 的 `time.Parse` 會誤解「EDT」等時區識別碼?

為什麼 Go 的 `time.Parse` 會誤解「EDT」等時區識別碼?

Patricia Arquette
Patricia Arquette原創
2024-11-25 14:53:12226瀏覽

Why Does Go's `time.Parse` Misinterpret Timezone Identifiers Like

為什麼 Go 的 Time.Parse 函數不解析時區識別符?

使用 Go 的 time.Parse 函數解析時間字串時,時區識別碼(例如「MST」)是根據「目前位置」設定進行解釋的。如果目前位置無法辨識縮寫,則時間將記錄為偏移量為零的虛構位置。

為了說明這一點,以下程式碼片段示範了該問題:

date := "2018 08 01 12:00 EDT"
tn, _ := time.Parse(format, date)

fmt.Println(tn) // Print +0000 despite EDT indicating a -0400 offset

此程式碼使用time.Parse 函數解析「2006 01 02 15:04 MST」格式的日期字串,然後列印產生的Time 物件。但是,它會列印“0000”而不是預期的“-0400”,因為函數使用的當前位置無法識別“EDT”縮寫。

要避免此問題,您可以使用替代方法進行解析時間字串:

  • 指定數字區域偏移量: 使用下列佈局進行解析包含數位區域偏移量,例如2006 01 02 15:04 -0400。
  • 使用 ParseInLocation: 使用 time.LoadLocation 明確指定位置,例如 time.ParseInLocation(format, date , time.LoadLocation("America/New_York")).

透過這些方法,您可以準確解析帶有時區縮寫的時間字串,確保時區資訊的正確解釋。

以上是為什麼 Go 的 `time.Parse` 會誤解「EDT」等時區識別碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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