Golang標(biāo)準(zhǔn)庫(kù)time包日常用法小結(jié)
時(shí)間日期是編程中經(jīng)常會(huì)用到的一種數(shù)據(jù)類型,在Golang中提供time包來處理時(shí)間相關(guān)的操作。本教程將詳細(xì)介紹time包中常用函數(shù)和方法的示例
time.Now()
:獲取當(dāng)前時(shí)間。
package main import ( "fmt" "time" ) func main() { currentTime := time.Now() fmt.Println("當(dāng)前時(shí)間:", currentTime) fmt.Println("當(dāng)前時(shí)間戳:", currentTime.Unix()) }
輸出:
當(dāng)前時(shí)間: 2023-09-16 10:36:49.054695 +0800 CST m=+0.011414701
當(dāng)前時(shí)間戳: 1694834492
time.Date()
:根據(jù)給定的年、月、日、時(shí)、分、秒和納秒創(chuàng)建一個(gè)時(shí)間。
package main import ( "fmt" "time" ) func main() { t := time.Date(2023, time.September, 14, 18, 30, 0, 0, time.UTC) fmt.Println("指定時(shí)間:", t) }
輸出:
指定時(shí)間: 2023-09-16 18:30:00 +0000 UTC
time.Parse()
:將字符串解析為時(shí)間類型。
package main import ( "fmt" "time" ) func main() { layout := "2006-01-02" str := "2023-09-16" t, _ := time.Parse(layout, str) fmt.Println("解析后的時(shí)間:", t) }
輸出:
解析后的時(shí)間: 2023-09-16 00:00:00 +0000 UTC
time.Duration()
:表示一段時(shí)間間隔,可以用來表示毫秒、秒、分鐘、小時(shí)等時(shí)間單位。
package main import ( "fmt" "time" ) func main() { duration := time.Duration(2) * time.Second fmt.Println("時(shí)間間隔:", duration) }
輸出:
時(shí)間間隔: 2s
time.Sleep()
:讓程序休眠一段時(shí)間。
package main import ( "fmt" "time" ) func main() { fmt.Println("開始") time.Sleep(2 * time.Second) fmt.Println("結(jié)束") }
輸出:
開始
// 程序休眠 2 秒
結(jié)束
time.Tick()
:創(chuàng)建一個(gè)定時(shí)器,按照指定的時(shí)間間隔間隔重復(fù)執(zhí)行某個(gè)操作。
package main import ( "fmt" "time" ) func main() { ticker := time.Tick(1 * time.Second) for range ticker { fmt.Println("滴答") } }
輸出:
滴答
滴答
滴答
...
time.Format()
:格式化時(shí)間為指定的字符串形式。
package main import ( "fmt" "time" ) func main() { t := time.Now() fmt.Println("格式化時(shí)間:", t.Format("2006-01-02 15:04:05")) }
輸出:
格式化時(shí)間: 2023-09-16 10:41:26
time.Time
類型是 Go 語(yǔ)言中處理日期和時(shí)間的標(biāo)準(zhǔn)類型。它包含了各種用于操作和計(jì)算時(shí)間的方法。下面是一些常用的方法:
1.t.Add(d Duration) time.Time
:這個(gè)方法用于將時(shí)間 t 增加一個(gè)時(shí)間間隔 d。參數(shù) d 的類型為Duration
,它表示一個(gè)時(shí)間段??梢允褂?code>time.Second、time.Minute
、time.Hour
等單位表示時(shí)間間隔。示例代碼:
package main import ( "fmt" "time" ) func main() { t := time.Now() d := 10 * time.Second newT := t.Add(d) fmt.Println("原始時(shí)間:", t) fmt.Println("增加時(shí)間間隔后的時(shí)間:", newT) }
原始時(shí)間: 2023-09-16 10:42:05.113844 +0800 CST m=+0.008983801
增加時(shí)間間隔后的時(shí)間: 2023-09-16 10:42:15.113844 +0800 CST m=+10.008983801
t.Sub(u time.Time) Duration
:這個(gè)方法用于計(jì)算出時(shí)間 t 與時(shí)間 u 之間的時(shí)間間隔。返回值的類型為Duration
,可以使用它的Seconds()、Minutes()、Hours()
等方法獲取時(shí)間間隔的秒數(shù)、分鐘數(shù)、小時(shí)數(shù)等。示例代碼:
package main import ( "fmt" "time" ) func main() { t1 := time.Now() t2 := time.Date(2022, time.January, 1, 0, 0, 0, 0, time.UTC) duration := t1.Sub(t2) fmt.Println("時(shí)間間隔:", duration) fmt.Println("秒數(shù):", duration.Seconds()) fmt.Println("分鐘數(shù):", duration.Minutes()) fmt.Println("小時(shí)數(shù):", duration.Hours()) }
時(shí)間間隔: 6194h43m3.5463288s
秒數(shù): 2.23009835463288e+07
分鐘數(shù): 371683.05910548
小時(shí)數(shù): 6194.717651758
3.t.Equal(u time.Time) bool
:這個(gè)方法用于判斷兩個(gè)時(shí)間是否相等。如果兩個(gè)時(shí)間相等,則返回true
,否則返回false
。示例代碼:
package main import ( "fmt" "time" ) func main() { t1 := time.Now() t2 := time.Now() t3 := time.Date(2023, time.January, 1, 0, 0, 0, 0, time.UTC) fmt.Println("t1和t2是否相等:", t1.Equal(t2)) fmt.Println("t1和t3是否相等:", t1.Equal(t3)) }
t1和t2是否相等: true
t1和t3是否相等: false
t.Before(u time.Time) bool
:這個(gè)方法用于判斷時(shí)間 t 是否在時(shí)間 u 之前。如果時(shí)間 t 在時(shí)間 u 之前,則返回true
,否則返回false
。示例代碼:
package main import ( "fmt" "time" ) func main() { t1 := time.Now() t2 := time.Date(2023, time.January, 1, 0, 0, 0, 0, time.UTC) fmt.Println("t1是否在t2之前:", t1.Before(t2)) }
t1是否在t2之前: false
5.t.After(u time.Time) bool
:這個(gè)方法用于判斷時(shí)間 t 是否在時(shí)間 u 之后。如果時(shí)間 t 在時(shí)間 u 之后,則返回true
,否則返回false
。示例代碼:
package main import ( "fmt" "time" ) func main() { t1 := time.Now() t2 := time.Date(2023, time.January, 1, 0, 0, 0, 0, time.UTC) fmt.Println("t1是否在t2之后:", t1.After(t2)) }
t1是否在t2之后: true
以上就是關(guān)于time包中一些常用函數(shù)和方法的介紹和示例代碼,可以通過它們來獲取當(dāng)前時(shí)間、創(chuàng)建指定時(shí)間、解析時(shí)間字符串、控制時(shí)間間隔等操作。結(jié)合實(shí)際需求使用這些函數(shù),方法,可以靈活地處理時(shí)間日期相關(guān)的邏輯。非常實(shí)用。更多相關(guān)Golang time包用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang實(shí)現(xiàn)命令行程序的使用幫助功能
這篇文章介紹了golang實(shí)現(xiàn)命令行程序使用幫助的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07GoFrame框架數(shù)據(jù)校驗(yàn)之校驗(yàn)對(duì)象校驗(yàn)結(jié)構(gòu)體
這篇文章主要為大家介紹了GoFrame框架數(shù)據(jù)校驗(yàn)之校驗(yàn)對(duì)象校驗(yàn)結(jié)構(gòu)體示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Golang中的Slice與數(shù)組及區(qū)別詳解
數(shù)組是一種具有固定長(zhǎng)度的基本數(shù)據(jù)結(jié)構(gòu),在golang中與C語(yǔ)言一樣數(shù)組一旦創(chuàng)建了它的長(zhǎng)度就不允許改變,數(shù)組的空余位置用0填補(bǔ),不允許數(shù)組越界。今天小編通過實(shí)例代碼操作給大家詳細(xì)介紹lang中的Slice與數(shù)組的相關(guān)知識(shí),一起看看吧2020-02-02Go語(yǔ)言實(shí)現(xiàn)LRU算法的核心思想和實(shí)現(xiàn)過程
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)LRU算法的核心思想和實(shí)現(xiàn)過程,LRU算法是一種常用的緩存淘汰策略,它的核心思想是如果一個(gè)數(shù)據(jù)在最近一段時(shí)間內(nèi)沒有被訪問到,那么在將來它被訪問的可能性也很小,因此可以將其淘汰,感興趣想要詳細(xì)了解可以參考下文2023-05-05golang如何實(shí)現(xiàn)抓取IP地址的蜘蛛程序詳解
這篇文章主要給大家介紹了關(guān)于利用golang如何實(shí)現(xiàn)抓取IP地址的蜘蛛程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07GOPROXY:解決go get golang.org/x包失敗問題
這篇文章主要介紹了GOPROXY:解決go get golang.org/x包失敗問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01golang 后臺(tái)進(jìn)程的啟動(dòng)和停止操作
這篇文章主要介紹了golang 后臺(tái)進(jìn)程的啟動(dòng)和停止操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04