获取给定的时区时间戳

Ike*_*ala -1 go

我正在玩时区,并注意到一些奇怪的事情.

我目前处于BST时区,比GMT提前一小时.

        now := time.Now()
        location, _ := time.LoadLocation("Atlantic/Cape_Verde")
        timeAtZone := now.In(location)
        fmt.Println(timeAtZone)
        timestamp = timeAtZone.Unix()
        fmt.Println(timestamp)
        fmt.Println(now.Add(-time.Hour).UTC().Unix())
        fmt.Println(now.UTC().Unix())
Run Code Online (Sandbox Code Playgroud)

你会注意到时间戳是BST我当前时区的时间戳.

我如何获得GMT的时间戳???

http://play.golang.org/p/oq0IRYa0h7

Rob*_*ier 8

Unix时间是绝对的.没有"BST Unix时间".没有"Atlantic/Cape_Verde"Unix时间."只有Unix时间.它是自特定时刻以来的秒数(1970年1月1日星期四00:00:00世界协调时间(UTC),不算飞跃秒).

时区与时间的表示有关,而不是时间本身.对于我来说,无论我们身在何处,都是同一时刻(暂时离开爱因斯坦).我们碰巧称那个时刻是不同的事情.在a上设置位置*Time表示您希望如何显示时间.因此,如果"timestamp"表示"表示时间的字符串",则可以获取UTC时间戳time.Now().UTC().String().