golang对日期格式化

时间:2024-11-16 11:54:55

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.测试