在Go 中精確地將UTC 轉換為本地時間
問題:
問題:試試將UTC 時間轉換為特定國家/地區的本地時間時,儘管考慮了UTC 差異,Go程式仍會遇到不正確的結果。潛在問題可能是什麼?
答案:import "time" // A map of country names to their time zone names var countryTz = map[string]string{ "Hungary": "Europe/Budapest", "Egypt": "Africa/Cairo", } // Function to convert UTC time to the local time of a specific country func timeIn(name string) time.Time { loc, err := time.LoadLocation(countryTz[name]) if err != nil { panic(err) } return time.Now().In(loc) } // Example usage 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) }透過手動新增 UTC 差異作為持續時間來計算時間時會出現錯誤。這種方法沒有考慮其他因素,例如夏令時 (DST)。 要將 UTC 時間準確轉換為本地時間,正確的方法是使用 time.LoadLocation。具體操作方法如下:此程式碼首先定義國家名稱與其對應時區名稱的對應。然後,使用 time.LoadLocation 取得給定國家/地區的特定時區。透過呼叫 time.Now().In(loc),當前 UTC 時間將轉換為所需國家的當地時間,同時考慮 DST 和其他因素。
以上是為什麼在Go中手動添加UTC偏移量無法準確地將UTC轉換為本地時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!