beego orm 时间相差八小时

今天使用beego的orm时遇到一个问题:mysql数据库为datetime格式的字段插入之后,数据库看到的时间会比正常时间靠前8个小时。

这个结果可以猜测到是跟时区设置有关的问题,但是找了半天都没找到问题。。

已邀请:

朋也 - Hello world!

赞同来自: AriesDevil

这个问题我碰到过,在数据库连接的url后面加上时区就可以了

github.com/tomoya92/pybbs-go/blob/master/main.go#L14

为你上线

赞同来自: kwanhur

在数据库配置那边指定个时区就好了,比如 ?charset=utf8&loc=Asia%2FShanghai

mars

赞同来自: chuzhaoqian

这个问题之前做项目遇到过,在beego官网看到的说法是连接参数加上时区 loc=Asia%sFShanghai 然而实际操作中发现可能是由于数据库版本问题并不能解决问题,提示说没有那个时区 后来看Mysql官网说是可以用loc=Local,然后问题就解决了

Xargin

赞同来自:

。。。谢大是把beego的issue粘过来了么

hheedat

赞同来自:

一楼正解,感谢!

mocos

赞同来自:

时区设置

ORM 默认使用 time.Local 本地时区

作用于 ORM 自动创建的时间 从数据库中取回的时间转换成 ORM 本地时间 如果需要的话,你也可以进行更改

// 设置为 UTC 时间 orm.DefaultTimeLoc = time.UTC ORM 在进行 RegisterDataBase 的同时,会获取数据库使用的时区,然后在 time.Time 类型存取时做相应转换,以匹配时间系统,从而保证时间不会出错。

注意:

鉴于 Sqlite3 的设计,存取默认都为 UTC 时间 使用 go-sql-driver 驱动时,请注意参数设置 从某一版本开始,驱动默认使用UTC时间,而非本地时间,所以请指定时区参数或者全部以UTC时间存取 例如:root:root@/orm_test?charset=utf8&loc=Asia%2FShanghai 参见 loc / parseTime

chuzhaoqian - 我猜一猜

赞同来自:

咱们使用北京时间,是东八区

要回复问题请先登录注册