1.对日期格式化为 YYYY-mm-dd, 并且没有数据时,返回空
import (
"encoding/json"
"time"
)
type DateTime time.Time
type SysRole struct {
RoleId int64 `gorm:"type:bigint(20);primary_key;auto_increment;角色ID;" json:"roleId"`
RoleName string `gorm:"type:varchar(30);comment:角色名称;" json:"roleName"`
RoleKey string `gorm:"type:varchar(100);comment:角色权限字符串;" json:"roleKey"`
RoleSort int `gorm:"type:int(11);comment:显示顺序;" json:"roleSort"`
DataScope string `gorm:"type:char(1);comment:数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限);" json:"dataScope"`
Status string `gorm:"type:char(1);comment:角色状态(0正常 1停用);" json:"status"`
UpdateBy string `gorm:"type:varchar(64);comment:更新者;" json:"updateBy"`
UpdateTime DateTime `json:"updateTime"`
Remark string `gorm:"type:varchar(500);comment:备注;" json:"remark"`
CreateTime DateTime `json:"createTime"`
CreateBy string `gorm:"type:varchar(32);comment:创建人;column:create_by;" json:"createBy"`
DelFlag int `gorm:"type:tinyint(1);default:0;comment:删除标记;column:del_flag;" json:"delFlag"`
}
// 映射数据表
func (r *SysRole) TableName() string {
return "sys_role"
}
// 为DateTime类型实现String方法,用于自定义格式化输出
func (d DateTime) String() string {
return time.Time(d).Format("2006-01-02 15:04:05")
}
// 日期格式化
func (t SysRole) MarshalJSON() ([]byte, error) {
type TmpJSON SysRole
var createTimeStr, updateTimeStr string
if!time.Time(t.CreateTime).IsZero() {
createTimeStr = t.CreateTime.String()
}
if!time.Time(t.UpdateTime).IsZero() {
updateTimeStr = time.Time(t.UpdateTime).Format("2006-01-02 15:04:05")
}
return json.Marshal(&struct {
TmpJSON
CreateTime string `json:"createTime"`
UpdateTime string `json:"updateTime"`
}{
TmpJSON: (TmpJSON)(t),
CreateTime: createTimeStr,
UpdateTime: updateTimeStr,
})
}
2.测试