第二十八: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)
相关推荐
西岭千秋雪_2 小时前
Kafka安装和使用
java·分布式·kafka·java-zookeeper
從南走到北2 小时前
JAVA国际版打车APP打车顺风车滴滴车跑腿APP源码Android+IOS+H5
android·java·ios
Java天梯之路2 小时前
如何接收前端参数
java·后端
独自破碎E2 小时前
从括号匹配到字符串解码:递归思想的巧妙应用
android·java·开发语言
Cobyte2 小时前
17. Vue3 业务组件库按需加载的实现原理
前端·javascript·vue.js
忧郁的橙子.2 小时前
二、Rabbit MQ 高级
java·开发语言
粥里有勺糖3 小时前
视野修炼-技术周刊第127期 | Valdi
前端·javascript·github
前端世界3 小时前
从零搭建 ASP.NET 单文件 Web 项目:一个能真用的 BookShop 管理页实战
服务器·前端·asp.net
Chan163 小时前
【 Java八股文面试 | JVM篇 内存结构、类加载、垃圾回收与性能调优 】
java·jvm·spring boot·后端·spring·idea