time包下有很多跟时间有关系的方法,以前我们介绍的随机数就是利用了time包下的一个方法,接下来我再来介绍一些常用方法
日期和时间
Now()-->Time,获取当前的日期
Date()-->Time,获取指定的日期
time-->string,
string-->time
格式化打印当前时间,要按照go语言特定的格式输入也就是2006 1 2 15:04:05(2006年1月2日15:04:05)可以记成612345
纳秒:UnixNano()-->int64
package main import ( "time" "fmt" ) func main() { /* time包: 1年:365天 1天:24小时 1小时:60分钟 1分钟:60second 60s 1秒:1000millisecond 1000ms 1毫秒:1000microsecond 1000μs 1微秒:1000nanosecond 1000ns 1纳秒:1000picosecond 1000ps */ //1.获取时间对象 t1 := time.Now() // 当前的时间 fmt.Println(t1) //2018-04-12 16:36:11.729 +0800 CST m=+0.009000001 //创建指定的时间 t2 := time.Date(1998,4,12,16,34,0,0,time.Local) fmt.Println(t2) /* time-->string t1.Format("格式")-->string string-->time time.Parse("格式","数据字符串")-->time */ s1:=t1.Format(time.ANSIC) //Mon Jan _2 15:04:05 2006 s2 := t1.Format("Mon Jan _2 15:04:05 2006") //6-1-2-3-4-5 fmt.Println(s1) fmt.Println(s2) s3:=t1.Format("2006年1月2日 15:04:05") fmt.Println(s3) s4:=t1.Format("2006-1-2 15:04:05") fmt.Println(s4) src1:="1998年4月12日 17:33:24" t3,err := time.Parse("2006年1月2日 15:04:05",src1) fmt.Println(t3,err) /* 3.timestamp,时间戳: 日期,距离1970年1月1日,0点0时,0分0秒,时间的差值 */ t4 := time.Date(1970,1,1,1,0,0,0,time.UTC) //1970年1月1日,1点0分0秒 //1小时,60分钟,3600秒 3600 000 000 000 timeStamp1:=t4.Unix() //秒 差值 3600 timeStamp2:=t4.UnixNano()//纳秒 fmt.Println(timeStamp1) fmt.Println(timeStamp2) fmt.Println(t1.Unix()) //当前时间,距离指定日期的秒数 fmt.Println(t1.UnixNano()) //当前时间,距离指定日期的纳秒数 }
获取时间,日期
Date() 日期
Clock() 时间
Year()年,Monty()月,Day()日,Hour()小时,Minute()分钟,Second()秒,Weekday()周..
package main import ( "time" "fmt" ) func main() { /* 获取日期,时间 ctrl+f,ctrl+r */ t1 := time.Now() fmt.Println(t1) //获取日期 year,month,day:=t1.Date() fmt.Println("年,月,日:",year,month,day) //获取时间 hour,minute,second := t1.Clock() fmt.Println("时,分,秒:", hour,minute,second) //获取年,月,日,时,分,秒,星期,纳秒,。。 fmt.Println("年:", t1.Year()) //年 fmt.Println("月:",t1.Month())//月 fmt.Println("日:",t1.Day())//日 fmt.Println("时:",t1.Hour())//时 fmt.Println("分:",t1.Minute())//分 fmt.Println("秒:",t1.Second())//秒 fmt.Println("纳秒:",t1.Nanosecond())//纳秒 fmt.Println("星期:",t1.Weekday())//星期 fmt.Println(t1.ISOWeek()) //返回年份,第几周 fmt.Println(t1.YearDay()) }Duration:时间间隔
Sleep() 睡眠
package main import ( "time" "fmt" "math/rand" ) func main() { /* Duration,时间间隔 */ t1 := time.Now() t2 := t1.Add(time.Nanosecond)//在当前时间上,累加1纳秒 fmt.Println(t1.Add(1)) fmt.Println(t1) fmt.Println(t2) t3 := t1.Add(time.Minute)// 当前时间上,累加1分钟 fmt.Println(t3) t4:=t1.Add(time.Hour * 24)//当前时间,类加1天 fmt.Println(t4) t5:=t1.AddDate(0,0,3)//累加:年,月,日 fmt.Println(t5) //两个time之间的间隔 d1:= t1.Sub(t5) //-72h0m0s fmt.Println(d1) fmt.Println(t4.Sub(t1)) //24h0m0s fmt.Println(t3.Sub(t1)) //1m0s fmt.Println(t1.After(t5)) //false fmt.Println(t1.Before(t5)) //true //睡眠 //time.Sleep(time.Nanosecond)//睡眠1纳秒 //time.Sleep(5 * time.Second) //当前正在执行的程序进入睡眠。。 //fmt.Println("over....") //睡眠,随机数:[1-10]s // [m,n], rand.Intn(n-m+1)+m rand.Seed(time.Now().UnixNano()) num := rand.Intn(10) + 1 // fmt.Println(num) time.Sleep(time.Duration(num) * time.Second) fmt.Println("睡眠结束。。。") }