Golang插入时间.现在数据库转移到UTC



我正在尝试插入一个时间。数据库中的Now()字段,但不断发生的是时间向前移动到UTC。我理解的想法是,在向用户演示时,始终转换为当地时间。问题是,我继承了这个体系,目前它已经根深蒂固,无法轻易改变。

有什么建议吗?我看到你可以在DSN中设置loc,但它没有解释将其更改为什么,也没有解释其实际效果,所以我很感激那里的信息。

编辑:一些信息,它是MySQL数据库,使用go MySQL 1.1和go 1.6.3。正在将数据插入DATETIME字段中。

插入处的数据不正确。GORM Debug显示了一次,MySQL查询记录器显示它向前移动。

我发现问题是go-mysql驱动程序自动将时间转换为UTC,这可以使用DSN中的loc参数进行更改。然而,这也改变了返回时间的方式。

若要解决此问题,请将loc=Local添加到DSN中。

这是我用来存储本地时间的方式。即使您的VPS位于另一个时区国家/地区,也能正常工作:

db, err = gorm.Open("mysql", "root:@tcp(localhost:3306)/mydatabase?charset=utf8&parseTime=True&loc=America%2FSao_Paulo")

因为golang解析中的时间将使用UTC

最新更新