go里面的时间date
package main import ( "fmt" "time" ) var timeLayoutStr = "2006-01-02 15:04:05" //go中的时间格式化必须是这个时间 //var timeLayoutStr = 2006/01/02 03:04:05 //合法, 格式可以改变 //var timeLayoutStr = 2019/01/02 15:04:05 //不合法, 时间必须是2016年1月2号这个时间 func testFormat() { /* 格式: 月份 1,01,Jan,January 日 2,02,_2 时 3,03,15,PM,pm,AM,am 分 4,04 秒 5,05 年 06,2006 时区 -07,-0700,Z0700,Z07:00,-07:00,MST 周几 Mon,Monday */ fmt.Println(time.Now().Format("现在是1月份")) fmt.Println(time.Now().Format("现在是01月_2日")) fmt.Println(time.Now().Format("现在是Jan月份")) fmt.Println(time.Now().Format("现在是January月份")) fmt.Println("现在是:", time.Now().Format(timeLayoutStr)) } func testFormat1() { t := time.Now() //当前时间 t.Unix() //时间戳 ts := t.Format(timeLayoutStr) //time转string fmt.Printf("time转string:%T,%v\n", ts, ts) st, _ := time.Parse(timeLayoutStr, ts) //string转time fmt.Printf("string转time :%T,%v\n", st, st) //在go中, 可以格式化一个自定义格式的时间字符串 prefixTStr := "PREFIXA-- 2021-11-05 -TESTB- 18:32:12 --SUFFIXC" //带前自定义格式的时间字符串 preTimeLayoutStr := "PREFIXA-- 2006-01-02 -TESTB- 15:04:05 --SUFFIXC" //解析格式需要和自定义格式的时间字符串一致 prefixTime, err := time.Parse(preTimeLayoutStr, prefixTStr) if err != nil { fmt.Println("err:", err) } else { fmt.Println("prefixTime:", prefixTime.Format(timeLayoutStr)) } //时间加减 time.ParseDuration() // such as "300ms", "-1.5h" or "2h45m". // Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". at, err := time.ParseDuration("-24h30m") //24小时30分钟前的时间, 正数就是之后的时间 if err != nil { fmt.Println("err:", err) } else { fmt.Println("时间加减 -24小时30分钟:", (t.Add(at)).Format(timeLayoutStr)) } //两个时间差 sub := t.Sub(prefixTime) fmt.Println("两个时间差:", sub.Hours(), "小时") //sub.Seconds() 秒, sub.Minutes()分钟, sub.Hours()小时 } func main() { testFormat() testFormat1() }