首頁 >後端開發 >Golang >為什麼在 Go 中手動將 UTC 轉換為本地時間經常會產生錯誤的結果?

為什麼在 Go 中手動將 UTC 轉換為本地時間經常會產生錯誤的結果?

Susan Sarandon
Susan Sarandon原創
2024-12-22 14:15:13537瀏覽

Why Does Manually Converting UTC to Local Time in Go Often Produce Incorrect Results?

在Go 中將UTC 轉換為本地時間:排除錯誤結果

將UTC 轉換為本地時間時,重要的是要考慮時區差異和執行轉換的正確方法。

在提供的程式碼片段中,嘗試手動添加時區偏移由於夏令時等因素,當前 UTC 時間的持續時間可能會導致不正確的結果。

時區映射:

程式碼依賴靜態映射來儲存時區偏移。更可靠的方法是使用 time.LoadLocation 函數,該函數根據指定的名稱動態載入時區資訊。這樣可以確保時區差異的準確性。

內建時區轉換:

建議使用 time.In 方法,而不是手動調整時間,它將時間戳轉換為特定時區。這考慮了當前設定和夏令時調整,提供更準確的結果。

程式碼範例:

var countryTz = map[string]string{
    "Hungary": "Europe/Budapest",
    "Egypt":   "Africa/Cairo",
}

func timeIn(name string) time.Time {
    loc, err := time.LoadLocation(countryTz[name])
    if err != nil {
        panic(err)
    }
    return time.Now().In(loc)
}

func main() {
    utc := time.Now().UTC().Format("15:04")
    hun := timeIn("Hungary").Format("15:04")
    eg := timeIn("Egypt").Format("15:04")
    fmt.Println(utc, hun, eg)
}

透過使用 time.LoadLocation 和時間。在此修訂後的代碼可確保本地時間從 UTC 正確轉換,同時考慮時區差異和夏令時。

以上是為什麼在 Go 中手動將 UTC 轉換為本地時間經常會產生錯誤的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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