golang时区问题
golang时区问题
在编写API时我们可能接收到前端请求的时间类型为字符串,当我们将它解析为time类型保存到数据库时,数据库会根据它所 在服务器的时区来给我们的数据⾃动设置时区,当我们从数据库取出数据时,时区会因为服务器数据库的时区不同⽽导致时区 差的问题,进⽽影响我们在根据时间做⼀些判断时,出现多8时区等等问题。 所以我们取出数据时需要做⼀下时区的处理,再进⾏时间的操作。 ⽤time包的In函数来做时区转换。
func main(){
//数据库取出的time类型时间
var testTime time.Time
testTime = time.Now()
fmt.Println(testTime)
//time.Local 获取的是本地时区
t1 := testTime.In(time.Local)
fmt.Println(t1)
//将数据库时间转为UTC
t2 := testTime.UTC()
fmt.Println(t2)
t3 := t2.In(time.Local)
fmt.Println(t3)
}
输出:
2019-03-22 10:05:12.6073357 +0800 CST m=+0.003014901
2019-03-22 10:05:12.6073357 +0800 CST
2019-03-22 02:05:12.6073357 +0000 UTC
2019-03-22 10:05:12.6073357 +0800 CST`
很明显,“数据库时间”.In(time.Local)会将本地时区和服务器数据库时区进⾏对⽐,如果时区相同,不做处理,如果时区不相 同处理为当前时区