第二十八:golang Time.time 时间格式返回定义结构体

一: 定义当前默认时间,写放数据库:

Go 复制代码
type Time time.Time

const (
	timeFormart = "2006-01-02 15:04:05"
	//timeFormart2 = "20060102150405"
)

func (t *Time) UnmarshalJSON(data []byte) (err error) {
	strData := string(data)
	if strings.Contains(strData, "/") {
		strData = strings.Trim(strData, `"'`)
		s := strings.Split(strData, "/")
		formatData := `"` + s[2][:4] + "-" + s[0] + "-" + s[1] + s[2][4:] + `"`
		strData = strings.Clone(formatData)
	}
	now, err := time.ParseInLocation(`"`+timeFormart+`"`, strData, time.Local)
	*t = Time(now)
	return
}

func (t Time) MarshalJSON() ([]byte, error) {
	b := make([]byte, 0, len(timeFormart)+2)
	b = append(b, '"')
	b = time.Time(t).AppendFormat(b, timeFormart)
	b = append(b, '"')
	return b, nil
}

func (t Time) String() string {
	return time.Time(t).Format(timeFormart)
}

func GetNow() Time {
	loc, _ := time.LoadLocation("Asia/Shanghai")
	return Time(time.Now().In(loc))
}

// 直接调用  GetNow() // 得出当前时间,是以 time 类型,在结构体调用:Getnow 如下结构体:

LoadTime            utils.Time     `json:"load_time" gorm:"type:timestamp;default:now()"`

第二种:返回当前时间类型,定义的是 Time 类型

Go 复制代码
type Time time.Time

const (
	timeFormart = "2006-01-02 15:04:05"
)

func (t *Time) UnmarshalJSON(data []byte) (err error) {
	strData := string(data)
	if strings.Contains(strData, "/") {
		strData = strings.Trim(strData, `"'`)
		s := strings.Split(strData, "/")
		formatData := `"` + s[2][:4] + "-" + s[0] + "-" + s[1] + s[2][4:] + `"`
		strData = strings.Clone(formatData)
	}
	now, err := time.ParseInLocation(`"`+timeFormart+`"`, strData, time.Local)
	*t = Time(now)
	return
}

func (t Time) MarshalJSON() ([]byte, error) {
	b := make([]byte, 0, len(timeFormart)+2)
	b = append(b, '"')
	b = time.Time(t).AppendFormat(b, timeFormart)
	b = append(b, '"')
	return b, nil
}

func (t Time) String() string {
	return time.Time(t).Format(timeFormart)
}

func GetNow(t time.Time) Time {
	loc, _ := time.LoadLocation("Asia/Shanghai")
	return Time(t.In(loc))
}

// GetNow() // 里面参数调用的是 返回 回来的时间类型处理

按这个方法调用返回时间类型: GetNow(v.CreatedAt)
相关推荐
Aotman_12 分钟前
JS 按照数组顺序对对象进行排序
开发语言·前端·javascript·vue.js·ui·ecmascript
indexsunny2 小时前
互联网大厂Java求职面试实战:Spring Boot微服务与Redis缓存场景解析
java·spring boot·redis·缓存·微服务·消息队列·电商
无心水2 小时前
【分布式利器:腾讯TSF】7、TSF高级部署策略全解析:蓝绿/灰度发布落地+Jenkins CI/CD集成(Java微服务实战)
java·人工智能·分布式·ci/cd·微服务·jenkins·腾讯tsf
28岁青春痘老男孩7 小时前
JDK8+SpringBoot2.x 升级 JDK 17 + Spring Boot 3.x
java·spring boot
方璧7 小时前
限流的算法
java·开发语言
元Y亨H7 小时前
Nacos - 服务注册
java·微服务
Hi_kenyon8 小时前
VUE3套用组件库快速开发(以Element Plus为例)二
开发语言·前端·javascript·vue.js
起名时在学Aiifox8 小时前
Vue 3 响应式缓存策略:从页面状态追踪到智能数据管理
前端·vue.js·缓存
曲莫终8 小时前
Java VarHandle全面详解:从入门到精通
java·开发语言
一心赚狗粮的宇叔8 小时前
中级软件开发工程师2025年度总结
java·大数据·oracle·c#