第二十八: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)
相关推荐
小林ixn7 分钟前
从零到一理解 React 父子组件通信:手写一个 Todo 应用带你彻底搞懂单向数据流
前端·javascript·react.js
萧瑟余晖27 分钟前
JDK 26 新特性详解
java·开发语言
马优晨1 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
醇氧1 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
qetfw3 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具
甲维斯3 小时前
我要开始吹牛逼了!Kimi K3 “宇宙无敌”!
前端·人工智能
a1117763 小时前
微光小屋-前端养成小游戏 开源项目
前端
kyriewen3 小时前
我让AI给前端项目做了一次完整的Code Review——它和人类的差距,比我想的大得多
前端·javascript·ai编程