【问题标题】:How to get the current timestamp in other timezones in Golang?如何在 Golang 中获取其他时区的当前时间戳?
【发布时间】:2015-01-16 19:47:53
【问题描述】:

我需要获取不同时区的当前时间。

目前我知道我们可以做到以下几点:

t := time.Now()
fmt.Println("Location:", t.Location(), ":Time:", t)
utc, err := time.LoadLocation("America/New_York")
if err != nil {
    fmt.Println("err: ", err.Error())
}
fmt.Println("Location:", utc, ":Time:", t.In(utc))

LoadLocation 名称被视为与 IANA 时区数据库中的文件相对应的位置名称,例如“America/New_York”。

如果给出了国家名称或 GMT 偏移量,例如印度 +530,是否有更简单的方法来获取当前时间?

编辑:我也想支持夏令时。

【问题讨论】:

  • 虽然在某些情况下使用固定偏移量是合适的,但通常最好使用Continent/City。时区和夏令时规则是政治性的和变化的。使用Continent/City 将允许您的应用程序在基础 IANA 时区数据库更新时适应这些更改。它还会为您处理夏令时。

标签: go


【解决方案1】:
//init the loc
loc, _ := time.LoadLocation("Asia/Shanghai")

//set timezone,  
now := time.Now().In(loc)

【讨论】:

  • 我假设你的意思是现在 := time.Now().In(loc)
  • 位置时区信息是从系统中获取的,有可能找不到位置字符串。如果找不到该位置,您的二进制文件将崩溃,因此请确保处理此错误。
【解决方案2】:

不,这是最好的方法。您可以使用 FixedZone 创建您的自定义 Location 并使用该自定义位置。

FixedZone 返回一个始终使用给定区域名称和 偏移量(UTC 以东的秒数)。

【讨论】:

  • 感谢法布里齐奥!我也想支持夏令时。对此有任何指示吗?
  • 我不知道如何定义自定义夏令时设置,但数据库中的时区已经支持夏令时。
猜你喜欢
  • 1970-01-01
  • 2011-02-16
  • 2012-03-23
  • 2017-02-15
  • 1970-01-01
  • 2021-12-04
  • 2019-06-14
  • 2018-09-26
  • 1970-01-01
相关资源
最近更新 更多