我正在尝试将 time.Now() 字段插入数据库,但不断发生的事情是时间向前移动到 UTC。我理解这个想法是始终如此,然后在向用户展示时转换为本地时间。问题是我继承了这个系统,而且它目前还很容易被根深蒂固地改变。
有小费吗?我看到您可以在 DSN 中设置 loc,但它没有说明将其更改为什么或实际效果,因此我将不胜感激那里的信息。
编辑:一些信息,它是 MySQL DB,使用 go-mysql 1.1 和 go 1.6.3。数据被插入到 DATETIME 字段中。
插入时数据不正确。GORM Debug 显示一次,MySQL 查询记录器显示它向前移动。
我发现问题在于 go-mysql 驱动程序自动将时间转换为 UTC,这可以使用 DSN 中的 loc 参数进行更改。然而,这也改变了时间的返回方式。
要解决此问题,请将 loc=Local 添加到您的 DSN。