I want to convert UTC time string to unix timestamp. I do this
fmt.Printf("%s %d
", time.Now().String(), time.Now().Unix())
fmt.Printf("%s %s
", time.Now().UTC().String(), time.Now().UTC().Unix())
But I got same unix timestamp 1499018765
2017-07-02 20:06:05.5582802 +0200 CEST 1499018765
2017-07-02 18:06:05.791337 +0000 UTC 1499018765
Unix()
always returns the number of seconds elapsed since January 1, 1970 UTC. So it does not matter whether you give it time.Now()
or time.Now().UTC()
, it is the same UTC time, just in different places on Earth. What you get as the result is correct.
这个解释不太对, 应该是时间戳只使用格林威治时区. 所以建议使用 time.Now().UTC().unix() 这样获取时间戳. 不会产生错觉. 当去格式化时间的时候, 只是程序去转化成了本地时间.