时区偏移?

I want to get the offset in seconds from a specified time zone. That is exactly what tz_offset() in Perl's Time::Zone does: "determines the offset from GMT in seconds of a specified timezone".

Is there already a way of doing this in Go? The input is a string that has the time zone name and that's it, but I know that Go has LoadLocation() in the time package, so string => offset or location => offset should be fine.

Input: "MST"

Output: -25200

Here is the code, that calculates current offset between local and specified timezones. I agree with Ainar-G's comment that offset makes sense only with relation to specified moment in time:

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)
}

This should do the trick:

location, err := time.LoadLocation("MST")
if err != nil {
    panic(err)
}

tzName, tzOffset := time.Now().In(location).Zone()

fmt.Printf("name: [%v]\toffset: [%v]
", tzName, tzOffset)

Will print:

name: [MST] offset: [-25200]

Go Playground: https://play.golang.org/p/GVTgnpe1mB1