在Golang中获取完整的UTC偏移量格式

时间:2019-02-06 06:31:22

标签: go time timezone timezone-offset

我需要获取某个位置的UTC偏移量。我正在解决来自不同值的结果不一致的问题。我需要获取的只是格式为+HHMM的值(例如,对于“欧洲/罗马”,为+0100)。

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

Playground

我得到的是

  • “亚洲/加德满都”:+0545(合适)
  • “亚洲/胡志明市”:+07(应为+0700
  • “美国/凤凰城”:MST(应为-0700
  • “欧洲/罗马”:CET(应为+0100

Reference Timezone country names

请帮助我。

1 个答案:

答案 0 :(得分:2)

您使用的Zone()方法有效exactly as advertized

  

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

对您来说,更好的方法是使用Format方法。像这样:

zone := time.Now().In(loc).Format("-0700")

当然,要注意:由于夏令时,即使这种情况也不是100%一致。