首頁 > 後端開發 > Golang > 為什麼在Go中手動添加UTC偏移量無法準確地將UTC轉換為本地時間?

為什麼在Go中手動添加UTC偏移量無法準確地將UTC轉換為本地時間?

Linda Hamilton
發布: 2024-12-26 06:25:11
原創
151 人瀏覽過

Why Does Manually Adding UTC Offset Fail to Accurately Convert UTC to Local Time in Go?

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

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