用gorm向mysql插入的时间数据和实际时间不一致问题
在golang中用gorm向mysql插入的时间数据和实际时间不一致问题
问题: 使用下面这段代码向数据插入数据。其中CreateTime和ModifyTime是time.Time类型。使用time.Now()
生成的时间和电脑本地时间是一致的,但是当这条数据插入到mysql数据库的article表时,CreateTime和ModifyTime两个字段的时间值却和本地时间不一样了。
func InsertArticle(c *gin.Context) {
article := model.Article{
Title: "Ubuntu18.04上安装NS-3",
Abstract: "只是一个摘要而已",
Type: 2,
CreateTime: time.Now(),
ModifyTime: time.Now(),
}
result := article.InsertArticle()
c.String(http.StatusOK, "插入数据的结果", result)
}
原因: 该问题应该是由时区不一致造成的。
解决方法: 在使用gorm.Open
连接mysql数据库时,在后面加上parseTime=True&loc=Local
,插入的时间就和本地时间一致了。
Db, err = gorm.Open("mysql", "root:12345@tcp(127.0.0.1:3306)/databasename?parseTime=True&loc=Local")
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步