golang 深坑系列,今天发现一个坑。
使用 time.Parse 将字符串转化为time.Time{} 之后,用gorm执行写入sql,结果居然多了8个小时。
而其实看执行的语句,都是 update xxxx set start_time = ‘2021-06-01 00:00:00’
但执行完毕之后,时间却变成了 ‘2021-06-01 08:00:00’
解决办法,客户端传入的时间,通过 time.ParseInLocal() 方法去转换。
var dt time.Time
loc, _ := time.LoadLocation("Asia/Shanghai")
dt, err = time.ParseInLocation("2006-01-02", "2021-06-20", loc)