Your Question

// PG 连接使用的时区参数,PG 使用的是 UTC TimeZone=Asia/Shanghai

// Model

type User struct {
    ID                int64     `gorm:"column:id;primaryKey;" json:"id"`
    CreatedAt         time.Time `gorm:"column:created_at;type:timestamp;" json:"createdAt"`
    UpdatedAt         time.Time `gorm:"column:updated_at;type:timestamp;" json:"updatedAt"`
}

保存

user := &{
    CreatedAt: time.Now(), // time.Now()  使用了电脑默认的时区,在中国使用的是东八区
    UpdatedAt: time.Now(),
}

保存到 PG 的时间没有了时区,也就是保存到 PG 的时间为 UTC,比实际时间大了8个时区。(比如 2022-01-21 09:05:13 +8 的北京时间保存到数据库的 UTC时间还是 2022-01-21 09:05:13 +0,这样数据库的时间比实际大了八个小时 )

请问如何在保存时间的时候把东八区的时间转换成 UTC 的时区再保存,同时取数据库 UTC 的时间如何转换成本地时区的时间。

Comment From: li-jin-gou

可以看下这个 https://gorm.cn/zh_CN/docs/session.html#NowFunc