【问题标题】:Get complete UTC offset format获取完整的 UTC 偏移格式
【发布时间】:2019-06-30 01:33:12
【问题描述】:

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

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

Playground

我得到了什么:

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

Reference Timezone country names

【问题讨论】:

  • 你得到的结果不一致是什么意思?
  • 我希望格式为+AB:CD,但会出现值“MST”和“CET”。
  • Zone() 的文档说它总是返回缩写名称时,您为什么期望它存在?

标签: go time timezone timezone-offset


【解决方案1】:

您使用的Zone() 方法正在工作exactly as advertized

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

对您来说更好的方法是使用Format 方法。比如:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多