
type UseDateTime struct { CreatedAt *time.Time `json:"-"` CreatedAtStr string `json:"created_at" gorm:"-"` UpdatedAt *time.Time `json:"-"` UpdatedAtStr string `json:"updated_at" gorm:"-"` } 结构体多添加两个字段 CreatedAtStr 和 UpdatedAtStr用 Tag 来控制不参与存储
使用 Gorm 自带的 Hook AfterFind
func (u *UseDateTime) AfterFind(tx *gorm.DB) (err error) { if u.CreatedAt != nil { u.CreatedAtStr = u.CreatedAt.Format("2006-01-02 15:04:05") } if u.UpdatedAt != nil { u.UpdatedAtStr = u.UpdatedAt.Format("2006-01-02 15:04:05") } return } { "code": 200, "data": [ { "id": 1, "username": "admin", "created_at": "2019-10-29 00:28:05", "updated_at": "2024-06-13 14:09:15" } ] } 1 CEBBCAT 2024-07-22 16:32:12 +08:00 楼主可以同时考虑这几种方案: 1. 定义响应专用的结构体。如果嫌麻烦,可以找找看代码生成器 2. 返回 unix 时间戳 |
2 CEBBCAT 2024-07-22 16:33:19 +08:00 另外 V2EX 似乎不让用别人照片当头像(以 /settings/avatar 为准) |
4 highFreqSurfer 2024-07-22 17:55:28 +08:00 给 time.Time 定义个别名, 实现 MarshalJSON() ([]byte, error) Scan(value interface{}) error Value() (driver.Value, error) 三个函数, 然后用这个别名替换掉你 model 里的*time.Time 就好了 |