time.Now()
, 获取 年 月 日 时 分 秒 纳秒
t := time.Now() //获取当前时间,类型是go的时间类型Time
tY := time.Now().Year()
tMo := time.Now().Month()
tD := time.Now().Day()
tH := time.Now().Hour()
tMi := time.Now().Minute()
tS := time.Now().Second()
tNaS := time.Now().Nanosecond()
获取当前时间戳
tU := time.Now().Unix() //单位秒,打印结果:1669775054
tUNa := time.Now().UnixNano() //单位纳秒,打印结果:1669775070433263400
获取当前时间的字符串格式
tStr := time.Now().Format("2006-01-02 15:04:05") //当前时间的字符串,2006-01-02 15:04:05据说是golang的诞生时间,固定写法
fmt.Printf("tStr: %v\n", tStr) //打印结果:tStr: 2022-11-30 10:22:47
时间字符串转时间戳
注意:时间模板必须是2006年1月2日15时4分5秒
,时间格式可以是2006-01-02 15:04:05
或2006/01/02 15:04:05
timeStr := "2022-11-30 10:27:39"
t, err := time.Parse("2006-01-02 15:04:05", timeStr)
if err == nil {
fmt.Printf("t: %v\n", t) //时间字符串转时间:打印结果:2022-09-08 11:02:39 +0000 UTC
fmt.Printf("t.Unix(): %v\n", t.Unix()) //将时间 转换成 时间戳:1662634959
}
使用Parse
默认获取为UTC时区。ParseInLocation
可以设置对应的时区。
var LOC, _ = time.LoadLocation("Asia/Shanghai")
//日期时间字符串
timeStr := "2022-11-30 10:21:15"
//要转换成时间日期的格式模板(go诞生时间,模板必须是这个时间)
tim, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr, LOC)
fmt.Println(tim.Unix())
时间戳转时间字符串
注意:用时间戳创建时间对象时,时间戳的数据类型为int64,我们一般从外部拿到的时间是int或其他int类型的,需要转换成int64
//时间戳
chuo := 1669774875
//时间日期格式模板
timeStr := time.Unix(int64(chuo), 0).Format("2006-01-02 15:04:05")
fmt.Printf("timeStr: %v\n", timeStr)
tU := time.Now().Unix() //已知的时间戳
tFStr := time.Unix(tU, 0).Format("2006-01-02 15:04:05")
fmt.Printf("tFStr: %v\n", tFStr)//打印结果:tFStr: 2022-11-30 10:16:54
时间字符串转时间
tFStr := "2022-11-30 10:27:39"
fT, err := time.Parse("2006-01-02 15:04:05", tFStr)
if err == nil {
fmt.Printf("fT: %v\n", fT)
}