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