go语言时间和时间戳转换

一.根据时间戳获取日期

// 获取时间,该时间带有时区等信息,获取的为当前地区所用时区的时间  
timeNow := time.Now()
// 获取时间戳 
unix := time.Now().Unix()  
// 获取UTC时区的时间  
utcTime := time.Now().UTC()  
// go语言固定日期模版  
timeLayout := "2006-01-02 15:04:05"  
// time.Unix的第二个参数传递0或10结果一样,因为都不大于1e9  
timeStr := time.Unix(unix, 0).Format(timeLayout)  
fmt.Println(timeNow, unix, utcTime, timeStr)  
 
// 获取年月日,其中month为string,也就是英文的月份  
year, month, day := time.Now().Date()
fmt.Printf("year is %+v, month is %+v, day is %+v \n", year, month, day)

二.将时间转换为时间戳

// string转化为时间,layout必须为 "2006-01-02 15:04:05"
times, _ := time.Parse(timeLayout, "2014-06-15 08:37:18")  
timeUnix := times.Unix()  
fmt.Printf("times is %+v \n, timeUnix is %+v", times, timeUnix)

三. 根据mysql中timestamp字段获取时间字符串

如下实例,其中lectureModel的create_time字段为timestamp  
lecture, err := ll.lectureModel.FindOne(req.LectureId) 
// 获取当前时区unix时需要减去3600*8,原因是mysql存储的时间为UTC时间
unixT := lecture.CreateTime.Unix() - 3600*8
timeStr := time.Unix(unixT, 0).Format(DateDetailLayout)