我正在玩时区,并注意到一些奇怪的事情.
我目前处于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的时间戳???
Unix时间是绝对的.没有"BST Unix时间".没有"Atlantic/Cape_Verde"Unix时间."只有Unix时间.它是自特定时刻以来的秒数(1970年1月1日星期四00:00:00世界协调时间(UTC),不算飞跃秒).
时区与时间的表示有关,而不是时间本身.对于我来说,无论我们身在何处,都是同一时刻(暂时离开爱因斯坦).我们碰巧称那个时刻是不同的事情.在a上设置位置*Time表示您希望如何显示时间.因此,如果"timestamp"表示"表示时间的字符串",则可以获取UTC时间戳time.Now().UTC().String().