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


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章