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
}
}
}
喜歡的點個贊吧!!!!!