我需要获取某个位置的UTC偏移量。我正在解决来自不同值的结果不一致的问题。我需要获取的只是格式为+HHMM
的值(例如,对于“欧洲/罗马”,为+0100
)。
func main() {
loc, _:= time.LoadLocation("Asia/Kathmandu")
offset, others:= time.Now().In(loc).Zone()
fmt.Println(offset, others)
}
我得到的是
+0545
(合适)+07
(应为+0700
)MST
(应为-0700
)CET
(应为+0100
)Reference Timezone country names
请帮助我。
答案 0 :(得分:2)
您使用的Zone()
方法有效exactly as advertized。
Zone计算在时间t生效的时区,返回时区的缩写名称(例如“ CET”)及其在UTC以东的秒数内的偏移量。
对您来说,更好的方法是使用Format
方法。像这样:
zone := time.Now().In(loc).Format("-0700")
当然,要注意:由于夏令时,即使这种情况也不是100%一致。