第二十八: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)
相关推荐
葡萄城技术团队9 分钟前
一键触发工作表中所有异步函数:用依赖单元格刷新 SpreadJS 公式
前端
java_nnnn12 分钟前
文件操作和IO
java
lsylalalala13 分钟前
多线程(4)
java·开发语言·多线程
Bigger15 分钟前
谁动了我的 URL?——记一次微前端"灵异 Bug"的排查实录
前端·ai编程·vue-router
JavaGuide22 分钟前
轻量开源版 IDEA 来了!
前端·后端
张洪权31 分钟前
nest.js websocket 群聊----私聊功能
前端·nestjs
流光D37 分钟前
AI Era: Building Web Sites and Configuring Nginx Reverse Proxy Process
前端·人工智能·nginx
sakidd37 分钟前
VS Code 的 AI Chat 现在已经这么能干了?
前端
吴声子夜歌40 分钟前
Guava——散列
java·guava
用户31268748772041 分钟前
AQS 到底怎么排队的?CLH 队列、state 与条件变量全链路拆解
java