在标准库中,还为我们提供了time包,里面都是关于日期时间的操作,都比较简单。
1、获取时间对象
获取当前时间:
func Now() Time// Now returns the current local time.
获取指定时间:
func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time
2、日期和文本之间的转换
有的时候,我们需要将日期按照指定的格式,转为文本信息。而有的时候,又需要将文本转为日期,那么就需要用到format()和parse()函数。
日期转为文本:
func (t Time) Format(layout string) string
文本转为日期:
func Parse(layout, value string) (Time, error)
3、时间戳
时间戳:指定的日期(当前日期,指定的某个日期),距离1970年1月1日0点0时0分0秒的时间差值。有秒,纳秒两种函数。
获取单位为秒的时间戳:
func (t Time) Unix() int64
获取单位为纳秒的时间戳:
func (t Time) UnixNano() int64
4、获取年月日时间秒等
根据time对象,可以获取对应的年、月、日、时、分、秒等等。
func (t Time) Year() intfunc (t Time) Month() Monthfunc (t Time) Day() intfunc (t Time) Hour() intfunc (t Time) Minute() intfunc (t Time) Second() intfunc (t Time) Date() (year int, month Month, day int)。。。
5、Sleep()
在程序中调用Sleep()函数,可以让当前的程序,进入睡眠:
func Sleep(d Duration)
6、示例代码
time包的示例代码如下:
package mainimport ( "time" "fmt" "math/rand")func main() { //1.获取当前的时间 t1:=time.Now() fmt.Printf("%Tn",t1)// time.Time fmt.Println(t1)//2018-05-29 10:58:23.789029492 +0800 CST m=+0.001181079 //2.获取指定的时间 t2 :=time.Date(2008,7,15,16,30,28,0,time.Local) fmt.Println(t2) //3.time--string之间的转换 //fmt.Println(t1.String()) s1 := t1.Format("2006年1月2日 15:04:05") fmt.Println(s1) s2 :=t1.Format("2006-01-02") fmt.Println(s2) s3 := "1999年10月10日" //string t3,err:=time.Parse("2006年1月2日",s3) if err != nil{ fmt.Println("err:",err.Error()) } fmt.Println(t3) //4.时间戳:指定的日期(当前日期,指定的某个日期),距离1970年1月1日0点0时0分0秒的时间差值:秒,纳秒 t4 := time.Date(1970,1,1,1,0,0,0,time.UTC) timeStamp1:=t4.Unix() //秒的差值 fmt.Println(timeStamp1)//3600 timeStamp2 :=t1.Unix() fmt.Println(timeStamp2) timeStamp3 :=t4.UnixNano()//纳秒差值 fmt.Println(timeStamp3)//3600 000 000 000 timeStamp4:=t1.UnixNano() fmt.Println(timeStamp4) //5.根据当前的时间获取指定的内容:年,月,日, year,month,day:=t1.Date() fmt.Println(year,month,day) hour,min,sec:=t1.Clock() fmt.Println(hour,min,sec) year2:=t1.Year() fmt.Println("年:",year2) fmt.Println(t1.YearDay()) month2:=t1.Month() fmt.Println("月:",month2) fmt.Println("日:",t1.Day()) fmt.Println("小时:",t1.Hour()) fmt.Println("分钟:",t1.Minute()) fmt.Println("秒:",t1.Second()) fmt.Println(t1.Weekday())//星期几 fmt.Println(t1.ISOWeek()) //年份,和该年份中的第几个星期 //t1.Nanosecond() //5.时间间隔 t5 := t1.Add(time.Minute)//duritaion时间间隔之前/后 fmt.Println(t1) fmt.Println(t5) fmt.Println(t1.Add(24*time.Hour)) //1天之后 t6:=t1.AddDate(1,0,0) fmt.Println(t6) fmt.Println(t1.Add(-5*time.Minute)) d1:=t5.Sub(t1) //两个time的时间差值: Duration fmt.Printf("%Tn",d1) fmt.Println(d1) //6.睡眠 time.Sleep(3*time.Second)//让当前的程序进入睡眠状态 fmt.Println("main...over.....") //睡眠[1-10]的秒随机数 rand.Seed(time.Now().UnixNano()) randNum := rand.Intn(10)+1 //int fmt.Println(randNum) time.Sleep(time.Duration(randNum)*time.Second)//Duration fmt.Println("睡醒了。。")}


