用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")