使用 xom 的 created 自动写入创建时间,发现数据库里面的时间 晚了 8 小时
// 这是数据库里面的记录
2021-01-12 08:14:08
// 这是应该正常的时间
2021-01-12 16:14:08
然后在服务器上,打印时间相关的信息,发现也都是正常的
log.Printf("time now is %v", time.Now().Format(config.DateTimeLayout))
// 2021-01-12 16:14:08
log.Printf("time e is %+v %+v", *e.TZLocation, *e.DatabaseTZ)
// local 信息比较多,但是显示 name:Local
log.Printf("time is %+v", time.Now().Location())
// local
查看数据库的时区是 CST,也是中国时区
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
服务器上 shell,打印出来的时间也是正常的
$ date -R
Tue, 12 Jan 2021 16:31:34 +0800
这么看,好像都是没有问题的,但是就是写入数据库之后,变成了-8 小时
1
sunshinev OP ![8ce5ba258afa45a0cefeeb289ae334dc1610441572.jpg]( https://cdn.jsdelivr.net/gh/sunshinev/remote_pics/8ce5ba258afa45a0cefeeb289ae334dc1610441572.jpg)
按照官网的文档说 loc 默认是 UTC 的,那出现这种情况,就只能是 1. 服务器按照 CST 的格式给到 sql 库进行处理 2. sql 库 把传过来的值按照本地的 timezone CST 转换成 loc 的默认 UTC 来处理 就 -8 个小时 3. sql 库把记录写入到数据库,就变成了 服务器也是 CST,数据库也是 CST,但是莫名其妙 减去了 8 个小时 |
2
hugo2lee 2021-01-12 17:22:04 +08:00
数据库链接有没有加 loc=Local
|
3
lunny 2022-02-25 20:42:05 +08:00
`engine.DatabseTZ =`
|