我的MariaDB数据库的CREATED_AT和UPDATED_AT字段以前填充了我的特定时区(欧洲/巴黎)的日期.
我现在已经集成了GORM(v1.23.8),然而,当在我的GORM模型中使用AutoCreateTime和AutoUpdateTime时,日期总是以UTC写的.如何配置GORM,以便在与UTC不同的时区中写入自动创建时间和自动更新时间日期.
我曾try 将Loc和ParseTime参数添加到MariaDB连接字符串中,但没有解决问题.
我的MariaDB数据库的CREATED_AT和UPDATED_AT字段以前填充了我的特定时区(欧洲/巴黎)的日期.
我现在已经集成了GORM(v1.23.8),然而,当在我的GORM模型中使用AutoCreateTime和AutoUpdateTime时,日期总是以UTC写的.如何配置GORM,以便在与UTC不同的时区中写入自动创建时间和自动更新时间日期.
我曾try 将Loc和ParseTime参数添加到MariaDB连接字符串中,但没有解决问题.
虽然您应该将日期存储在数据库中作为UTC的原因有很多(例如,许多前端框架需要UTC格式的日期,并将自己本地化它们),但由于我正在使用的遗留系统已经将数据库日期存储在当地时区,我发现以下解决方案对我有效:
gormDB, err := gorm.Open(mysql.Open(fmt.Sprintf("%s:%s@tcp(%s:%d)/%s", userName, password, hostName, port, dbname)), &gorm.Config{
NowFunc: func() time.Time {
currentTime := time.Now()
_, offset := currentTime.Zone()
mysqlTime := currentTime.Add(time.Second * time.Duration(offset))
return mysqlTime
},
})