用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")
原文地址:https://www.cnblogs.com/variablex/p/14059869.html