首頁 > 後端開發 > Golang > 主體

為什麼 Go 的 `time.Parse()` 不處理時區識別碼?

Susan Sarandon
發布: 2024-11-26 01:14:10
原創
373 人瀏覽過

Why Doesn't Go's `time.Parse()` Handle Timezone Identifiers?

為什麼Go 的time.Parse() 不解析時區標識符

在Go 中,time.Parse() 函數用於將日期和時間字串解析為時間值。但是,與其他日期和時間庫不同,time.Parse() 不會自動解析「EST」或「EDT」等時區識別碼。相反,它使用當前系統的時區來確定時間的偏移量。

問題

問題中提供的程式碼示範了此問題。它嘗試使用 time.Parse() 以兩種方式解析日期字串(“2018 08 01 12:00 EDT”):指定和不指定所需時區位置(America/New_York)。

使用時time.Parse() 沒有指定位置,時區標識符(“EDT”)無法識別,並且時間被解析為當前系統的時間時區(“0000”)。這會導致時間值不正確。

解決方案

要正確解析包含時區標識符的日期和時間字串,time.ParseInLocation() 函數必須被使用。此函數需要一個額外的 Location 參數,該參數指定解析時間所需的時區。

在提供的程式碼中, time.LoadLocation() 用於建立所需時區的 Location 物件(「America/New_York "),然後將其傳遞給 time.ParseInLocation()。這可確保正確解析時區標識符(“EDT”)並傳回正確的時間值。

替代解決方案

或者,可以使用日期和明確支持時區解析的時間庫,例如流行的“time.go”庫。該函式庫提供了像 ParseInZone() 這樣的函數,它允許直接解析時區標識符。

以上是為什麼 Go 的 `time.Parse()` 不處理時區識別碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板