package main import ( "fmt" "time" ) func main(){ //time.Time代表一个纳秒精度的时间点 var t time.Time //返回当前时间 t = time.Now() fmt.Printf("%v\n", t) //返回所在时区:Local fmt.Printf("%v\n", t.Location()) //返回UTC时间和UTC时区 fmt.Printf("%v %v\n", t.UTC(), t.UTC().Location()) //同上,In()返回指定时区的时间 fmt.Printf("%v %v\n", t.In(time.UTC), t.In(time.UTC).Location()) //返回当地时区的时间 fmt.Printf("%v %v\n", t.Local(), t.Local().Location()) //根据时间戳返回本地时间,参数分别表示秒数和纳秒数 // fmt.Println(time.Now().Unix()) t2 := time.Unix(1593514197, 0) fmt.Println(t2) //根据指定时间返回time.Time,分别指定年,月,日,时,分,秒,纳秒,时区 t3 := time.Date(2019, time.Month(5), 26, 15, 30, 20, 0, t.Location()) fmt.Println(t3) //获取时间信息 t4 := time.Now() //返回日期 fmt.Println(t4.Date()) //返回年 fmt.Println(t4.Year()) //返回月 fmt.Println(t4.Month()) //返回日 fmt.Println(t4.Day()) //返回星期 fmt.Println(t4.Weekday()) //返回ISO 9601标准下的年份和星期编号 fmt.Println(t4.ISOWeek()) //返回时分秒 fmt.Println(t4.Clock()) //返回小时 fmt.Println(t4.Hour()) //返回分钟 fmt.Println(t4.Minute()) //返回秒 fmt.Println(t4.Second()) //返回纳秒 fmt.Println(t4.Nanosecond()) //返回一年中对应的天 fmt.Println(t4.YearDay()) //返回时区的规范名,时区相对于UTC的时间偏移量(秒) fmt.Println(t4.Zone()) //返回时间戳 fmt.Println(t4.Unix()) //返回纳秒时间戳 fmt.Println(t4.UnixNano()) //格式化输出时间:2017-10-23 19:16:25 t5 := time.Now() fmt.Println(t5) fmt.Println(t5.Format("2006-01-02 15:04:05")) //时间的比较与计算 t6 := time.Now() //是否零时时间:false fmt.Println(t6.IsZero()) //t6时间在t5时间之后,返回真:true fmt.Println(t6.After(t5)) //t5时间在t6时间之前,返回真:true fmt.Println(t5.Before(t6)) //时间是否相同:false fmt.Println(t6.Equal(t5)) //返回t6加上纳秒的时间: fmt.Println(t6.Add(100000)) //返回两个时间之差的纳秒数:6.382µs fmt.Println(t6.Sub(t5)) //返回t6加1年,1月,1天的时间 fmt.Println(t6.AddDate(1, 1, 1)) //时间的序列化 t7 := time.Now() //序列化二进制 bin, _ := t7.MarshalBinary() //反序列化二进制:2017-10-23 19R:16:25.383923 +0800 CST t7.UnmarshalBinary(bin) fmt.Println(t7) //序列化json:"2017-10-23T19:16:25.383923+08:00" json, _ := t7.MarshalJSON() fmt.Println(string(json)) //反序列化json:2017-10-23 19:16:25.383923 +0800 CST t7.UnmarshalJSON(json) fmt.Println(t7) //序列化文本:2017-10-23T19:16:25.383923+08:00 txt, _ := t7.MarshalText() fmt.Println(string(txt)) //反序列化文本:2017-10-23 19:16:25.383923 +0800 CST t7.UnmarshalText(txt) fmt.Println(t7) //gob编码:2017-10-23 19:16:25.383923 +0800 CST gob, _ := t7.GobEncode() t7.GobDecode(gob) fmt.Println(t7) //时间段time.Duration dur := time.Duration(6666666600000) //返回字符串表示:1h51m6.6666s fmt.Println(dur.String()) //返回小时表示:1.8518518333333334 fmt.Println(dur.Hours()) //返回分钟表示:111.11111 fmt.Println(dur.Minutes()) //返回秒表示:6666.6666 fmt.Println(dur.Seconds()) //返回纳秒表示:6666666600000 fmt.Println(dur.Nanoseconds()) //时区time.Location,返回时区名:local fmt.Println(time.Local.String()) //通过地点名和时间偏移量返回时区:Shanghai fmt.Println(time.FixedZone("Shanghai", 800)) //通过给定时区名称,返回时区:Asia/Shanghai loc, _ := time.LoadLocation("Asia/Shanghai") fmt.Println(loc) //阻塞当前进程3秒 time.Sleep(time.Second * 3) //定时器time.Timer,创建一个1秒后触发定时器 timer1 := time.NewTimer(time.Second * 1) <-timer1.C fmt.Println("timer1 end") //1秒后运行函数 time.AfterFunc(time.Second * 1, func() { fmt.Println("wait 1 second") }) time.Sleep(time.Second * 3) //打点器time.Ticker,创建一个打点器,在固定1秒内重复执行 ticker := time.NewTicker(time.Second) num := 1 for { if num > 5 { ticker.Stop() break } select { case <-ticker.C: num++ fmt.Println("1 second...") } } }
原文:https://www.cnblogs.com/honglingjin/p/13215471.html