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

时间:2016-07-19 19:11:19

标签: go go-gorm

我正在尝试将time.Now()字段插入数据库,但是发生的事情是时间转移到UTC。我理解这个想法总是在向用户呈现时转换为本地时间。问题是我继承了这个系统,目前很容易被改变。

任何提示?我看到你可以在DSN中设置loc但是它没有解释改变它的内容以及它的实际效果,所以我很感激那里的信息。

编辑:一些信息,它是MySQL DB,使用go-mysql 1.1并转到1.6.3。数据正被插入DATETIME字段。

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

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

要解决此问题,请在您的DSN中添加loc = Local。

2 个答案:

答案 0 :(得分:2)

这是我用来始终存储当地时间的方式。即使您的VPS位于其他时区国家/地区也能正常运行:

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

答案 1 :(得分:-3)

因为golang parse中的时间将使用UTC