go语言中日期的格式化
1. 获取当前时间
t := time.Now()
fmt.Println(t)
2. 格式化时间
ft := t.Format("2006-01-02 15:04:05") // 2006-01-02 15:04:05 这里面的数字不能更改
fmt.Println(ft) //2019-01-21 11:40:20
ft = t.Format("2006/01/02") //2019/01/21
fmt.Println(ft)
3. 根据已有时间字符串重新格式化
inputDate := "2018-12-21 09:21:25"
nnt, _ := time.Parse("2006-01-02 15:04:05",inputDate)
fmt.Println(nnt.Format("2006/01/02 15:04:05"))
4. 设置时区
一般不用设置
inputDate = "12-18-2018 09:21:25"
loc , _ := time.LoadLocation("Asia/Shanghai")
nnt2, _ := time.ParseInLocation("01-02-2006 15:04:05",inputDate,loc)
fmt.Println(nnt2.Format("2006/01/02 15:04:05"))
5. 获取当前时间的年月日时分秒
tt := time.Now()
fmt.Println(tt.Year())
fmt.Println(tt.Month()) // 这里输出的是英文的月
month := fmt.Sprintf("%d",tt.Month())
fmt.Println(month) //这里转成数字了
fmt.Println(tt.Day())
fmt.Println(tt.Hour())
fmt.Println(tt.Minute())
fmt.Println(tt.Second())3. 根据已有时间字符串重新格式化
inputDate := "2018-12-21 09:21:25"
nnt, _ := time.Parse("2006-01-02 15:04:05",inputDate)
fmt.Println(nnt.Format("2006/01/02 15:04:05"))
6.时间戳与日期间的相互转换
t1 := time.Now().UnixNano() //纳秒
time.Sleep(2 * time.Second)
t2 := time.Now().UnixNano()
fmt.Println(t2-t1)
t3 := "2021-12-31 23:59:59"
t4 := "2008-08-03 10:30:00"
temp := "2006-01-02 15:04:05"
time3 ,_ :=time.Parse(temp,t3)
time4 ,_ :=time.Parse(temp,t4)
res := int64(math.Abs(float64(time4.Unix()-time3.Unix()))) //秒
fmt.Println(res)
时间戳转日期
temp := "2006-01-02 15:04:05"
timestamp := time.Now().Unix() //当前时间戳
dates := time.Unix(timestamp,0) //时间戳转日期
fmt.Println(dates.Format(temp)) //日期格式化