go语言基础 时间time包

time包下有很多跟时间有关系的方法,以前我们介绍的随机数就是利用了time包下的一个方法,接下来我再来介绍一些常用方法

日期和时间
Now()-->Time,获取当前的日期
Date()-->Time,获取指定的日期

time-->string,

        string-->time

        格式化打印当前时间,要按照go语言特定的格式输入也就是2006 1 2 15:04:05(2006年1月2日15:04:05)可以记成612345

time.Now().Format("2006 1 2 15:04:05") // 6 1 2 3 4 5
time.Parse("模板612345", str)-->Time
时间戳:timeStamp
该日期,距离1970年1月1日,0点0时0分0秒。。的时间差值
秒:Unix()-->int64

纳秒: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:时间间隔
type Duration int64
Add()
AddDate(year,month,day)
Sub()
After()
Before()

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("睡眠结束。。。")


}

你可能感兴趣的:(包)