將UTC 時間轉換為當地時間可能是一個挑戰,尤其是在考慮時間時區域變化。在 Go 中,一些用戶在嘗試將 UTC 時間偏移持續時間添加到當前時間時遇到了不正確的結果。
問題在於時區的處理。雖然添加時間偏移持續時間可以調整時間值,但它不考慮特定時區的規則和 DST(夏令時)變化。要將UTC準確地轉換為本地時間,正確的方法是使用time.LoadLocation函數。
下面的程式碼示範如何使用time.LoadLocation取得特定時間的本地時間locations:
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) }
在此範例中,countryTz 定義了國家及其對應時區名稱的地圖。 timeIn 函數載入適當的時區並將目前時間轉換為該時區的本機時間。
透過使用 time.LoadLocation,程式碼確保考慮到時區規則和 DST 調整,提供準確的當地時間。
以上是Go中如何準確將UTC轉換為當地時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!