数据库
首页 > 数据库> > golang 保存时间到数据库会多出来八小时

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

时间区间是对 东八区

由于我们数据层 和 业务层分离

直接在数据层测试写入数据 发现时间会改变 断定是 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))

标签:会多,zone,Cfg,Mysql,golang,conf,time,CST,八小时
来源: https://www.cnblogs.com/guanchaoguo/p/16330436.html