我想从指定时区获取以秒为单位的偏移量。这正是 Perl 的 Time::Zone 中tz_offset()
所做的:"确定指定时区与 GMT 的偏移量(以秒为单位)。
在 Go 中已经有办法做到这一点了吗?输入是一个具有时区名称的字符串,仅此而已,但我知道 Go 在 time
包中具有LoadLocation()
,因此字符串 => 偏移量或位置 => 偏移量应该没问题。
输入:"MST"
输出: -25200
这应该可以解决问题:
location, err := time.LoadLocation("MST")
if err != nil {
panic(err)
}
tzName, tzOffset := time.Now().In(location).Zone()
fmt.Printf("name: [%v]toffset: [%v]n", tzName, tzOffset)
将打印:
名称:[MST] 偏移量:[-25200]
围棋游乐场:https://play.golang.org/p/GVTgnpe1mB1
本地时区和指定时区之间的当前偏移量的代码。我同意 Ainar-G 的评论,即偏移仅在与指定时刻相关时才有意义:
package main
import (
"fmt"
"time"
)
func main() {
loc, err := time.LoadLocation("MST")
if err != nil {
fmt.Println(err)
}
now := time.Now()
_, destOffset := now.In(loc).Zone()
_, localOffset := now.Zone()
fmt.Println("Offset:", destOffset-localOffset)
}