我正在尝试将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。
答案 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