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 47 天前
楼主可以同时考虑这几种方案:
1. 定义响应专用的结构体。如果嫌麻烦,可以找找看代码生成器 2. 返回 unix 时间戳 |
![]() |
2
CEBBCAT 47 天前
另外 V2EX 似乎不让用别人照片当头像(以 /settings/avatar 为准)
|
![]() |
4
highFreqSurfer 47 天前
给 time.Time 定义个别名, 实现 MarshalJSON() ([]byte, error) Scan(value interface{}) error Value() (driver.Value, error) 三个函数, 然后用这个别名替换掉你 model 里的*time.Time 就好了
|