获取完整的 UTC 偏移格式

Har*_*ull -1 time timezone go timezone-offset

我需要获取某个位置的 UTC 偏移量。我因不同值的结果不一致而遇到麻烦。我需要获取的只是格式中的值+HHMM(例如,+0100“欧洲/罗马”)。

func main() {
    loc, _:= time.LoadLocation("Asia/Kathmandu")
    offset, others:= time.Now().In(loc).Zone()
    fmt.Println(offset, others)
}
Run Code Online (Sandbox Code Playgroud)

操场

我得到什么:

  • “亚洲/加德满都”:(+0545合适)
  • “Asia/Ho_Chi_Minh”:(+07应该是+0700
  • “美国/凤凰城”:(MST应该是-0700
  • “欧洲/罗马”:(CET应该是+0100

参考时区国家名称

Fli*_*mzy 6

Zone()您使用的方法与广告中的完全一样

Zone 计算在时间 t 有效的时区,返回该区域的缩写名称(例如“CET”)及其以 UTC 以东的秒数的偏移量。

对您来说更好的方法是使用该Format方法。就像是:

zone := time.Now().In(loc).Format("-0700")
Run Code Online (Sandbox Code Playgroud)

当然,请注意:由于夏令时的原因,即使这样也不会 100% 一致。