golang 保存时间到数据库会多出来八小时
在golang 保存时间字符串转为时间格式后保存多出8小时
初步排查可能mysql数据库服务器时间问题
show variables like'%time_zone';
// outpot
Variable_name`, `Value`
'system_time_zone', 'CST'
'time_zone', 'SYSTEM'
进入服务查看
date
# outpout
Tue May 31 14:47:19 CST 2022
时间区间是对 东八区
由于我们数据层 和 业务层分离
- 数据层接受前端参数 字符串
- 字符串传入rpc 传入 数据层
- 数据层写入数据库
直接在数据层测试写入数据 发现时间会改变 断定是 golang str to time 转换出了问题
网上说查看数据库链接时候设置时区
args := fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local",
conf.Cfg.Mysql.User,
conf.Cfg.Mysql.Password,
conf.Cfg.Mysql.IP,
conf.Cfg.Mysql.Port,
conf.Cfg.Mysql.Name,
)
// user:password@(localhost)/dbname?charset=utf8&parseTime=True&loc=Local
conn, err := gorm.Open("mysql", args)
### 设置后任然无效
处理方式
time.ParseInLocation("2006-01-02 15:04:05", endTime, time.FixedZone("CST", 8*3600))
本文来自博客园,作者:vx_guanchaoguo0,转载请注明原文链接:https://www.cnblogs.com/guanchaoguo/p/16330436.html