1. 程式人生 > 其它 >go語言基礎包time的知識點總結

go語言基礎包time的知識點總結

  time包在開發中還是用的比較多的,這裡簡單的總結一下,在開發工作中常用的函式

  time包中常用的資料型別Location時區型別Time時間型別Duration時段型別Timer定時器型別Ticker迴圈定時型別Weekday和Month型別time包中time型別下常用的方法time.Now():返回當前時間time.Now().Format():格式化時間,在go中使用2006-01-02 15:04:05來表示格式字串time.Parse():給定時間字串,返回指定格式的time型別time.ParseInLocation():給定時間字串和時區,返回指定格式的time型別time.Now().Unix():返回當前時間戳time.Unix():給定時間戳返回預設的時間格式time.Now().UTC()返回UTC時區的時間,相差8小時time.Now().In():可以設定時區time.Now().Year():獲取年time.Now().Add():新增時間time.Now().AddDate():可以新增年月日的時間

  package main

  func main() {

  //獲取當前時間

  //t1 :=time.Now()

  ////給定字串轉成time型別,如果字串不解析失敗,會返回err

  //t :="2021-11-06 13:26:56"

  //t1,err :=time.Parse("2006-01-02 15:04:05",t)

  ////給定字串轉成time型別,可以指定時區,如果字串不解析失敗,會返回err

  //loc,_ :=time.LoadLocation("GMT")//注意這裡的名字是需要大寫的

  //t1,err=time.ParseInLocation("2006-01-02 15:04:05",t,loc)

  //

  //fmt.Println(err)

  //fmt.Println(t1)

  //獲取當前時間戳

  //unixtime:=time.Now().Unix()

  //fmt.Println(unixtime)

  ////時間戳轉成時間格式

  //unix :=time.Unix(unixtime,0)

  //fmt.Println(unix)

  //使用本地時區,獲取當前時間

  //t :=time.Now().Local()

  //使用UTC時區,獲取當前時間,相差8小時

  //t=time.Now().UTC()

  //指定時區

  //loc,_:=time.LoadLocation("UTC")

  // t=t.In(loc)

  //fmt.Println(t)

  //獲取年月日,時分秒

  //t :=time.Now()

  //y :=t.Year()

  //m :=t.Month()

  //d :=t.Day()

  //h :=t.Hour()

  //M :=t.Minute()

  //s :=t.Second()

  //兩個時間比較

  //t1 :=time.Now()

  //t2,_ :=time.Parse("2006-01-02 15:04:05","2022-12-01 12:12:12")

  ////t1時間是否在t2之前,如果是返回真,否則為false

  //fmt.Println(t1.Before(t2))

  ////t1時間是否在t2之後,如果是返回真,否則為false

  //fmt.Println(t1.After(t2))

  ////t1時間是否與t2相等,如果是返回真,否則為false

  //fmt.Println(t1.Equal(t2))

  t :=time.Now()

  fmt.Println(t)

  //當前時間加5分鐘

  //t=t.Add(time.Minute*5)

  //當前時間加具體時間日期

  t=t.AddDate(2,0,0)

  fmt.Println(t)

  fmt.Println(t.Format("2006-1-2"))

  }

  time包中Duration型別下常用的方法time.ParseDuration解析一個時間段字串常用格式:h,m,s,ms,us,nstime.Since():返回從時間t到現在的時間間隔

  //解析時間段字串

  //dur ,err :=time.ParseDuration("1.5h")

  //fmt.Println(dur,err)

  //t :=time.Now()

  //time.Sleep(time.Second)

  ////從t時間到現在的時間間隔

  //dur :=time.Since(t)

  ////將時間段轉化成小時

  //fmt.Println(dur.Hours())

  ////將時間段轉化成分鐘

  //fmt.Println(dur.Minutes())

  ////將時間段轉化成秒數

  //fmt.Println(dur.Seconds())

  time包中Timer型別下常用的方法

  這個timer定時器,在go協程通訊時,使用的會比較多,常用作超時處理

  NewTimer():建立一個Timer定時器AfterFunc():建立一個Timer匿名定時器Reset():定時器重置Stop():停止定時器

  package main

  import (

  "fmt"

  "time"

  )

  func main() {

  //建立一個5秒的定時器

  //ter :=time.NewTimer(time.Second*5)

  //c :=<-ter.C//這裡會阻塞

  //

  //fmt.Println(c)

  //建立一個3秒的定時器

  //ter2 :=time.After(time.Second*3)

  //c2 :=<-ter2

  //fmt.Println(c2)

  //time3 :=time.NewTimer(time.Second*3)

  //go func() {

  //<-time3.C

  //fmt.Println("定時器執行了")

  //}()

  //

  //time.Sleep(time.Second*5)

  //stop :=time3.Stop()

  //if stop{

  //fmt.Println("time3 停止了")

  //}

  }

  time包中Ticker型別下常用的方法

  //Ticker型別的定時是同期迴圈的定時器

  package main

  import (

  "fmt"

  "time"

  )

  func main() {

  //ticker定時器,每3秒列印一次

  ticker :=time.NewTicker(time.Second*3)

  i :=0

  for{

  <-ticker.C

  i++

  fmt.Println("我列印了",i)

  if i==10{

  ticker.Stop()

  break

  }

  }

  }

  喜歡的點個贊吧!!!!!