Golang標(biāo)準(zhǔn)庫(kù)time包日常用法小結(jié)
時(shí)間日期是編程中經(jīng)常會(huì)用到的一種數(shù)據(jù)類(lèi)型,在Golang中提供time包來(lái)處理時(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í)間類(lèi)型。
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í)間間隔,可以用來(lái)表示毫秒、秒、分鐘、小時(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("開(kāi)始")
time.Sleep(2 * time.Second)
fmt.Println("結(jié)束")
}
輸出:
開(kāi)始
// 程序休眠 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類(lèi)型是 Go 語(yǔ)言中處理日期和時(shí)間的標(biāo)準(zhǔn)類(lèi)型。它包含了各種用于操作和計(jì)算時(shí)間的方法。下面是一些常用的方法:
1.t.Add(d Duration) time.Time:這個(gè)方法用于將時(shí)間 t 增加一個(gè)時(shí)間間隔 d。參數(shù) d 的類(lèi)型為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í)間間隔。返回值的類(lèi)型為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ù)和方法的介紹和示例代碼,可以通過(guò)它們來(lái)獲取當(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)文章
詳解Go語(yǔ)言如何實(shí)現(xiàn)類(lèi)似Python中的with上下文管理器
熟悉?Python?的同學(xué)應(yīng)該知道?Python?中的上下文管理器非常好用,那么在?Go?中是否也能實(shí)現(xiàn)上下文管理器呢,下面小編就來(lái)和大家仔細(xì)講講吧2023-07-07
Go語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單JWT登錄驗(yàn)證的示例代碼
在 Web 開(kāi)發(fā)中,身份驗(yàn)證是一個(gè)繞不開(kāi)的話題,JWT是一種無(wú)狀態(tài)的、跨平臺(tái)的身份驗(yàn)證解決方案,非常適合現(xiàn)代 Web API 場(chǎng)景,下面我們看看如何使用Go語(yǔ)言實(shí)現(xiàn)JWT 登錄驗(yàn)證吧2025-08-08
go面向?qū)ο蠓绞讲僮鱆SON庫(kù)實(shí)現(xiàn)四則運(yùn)算
這篇文章主要為大家介紹了go面向?qū)ο蠓绞讲僮鱆SON庫(kù)實(shí)現(xiàn)四則運(yùn)算的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
使用Go實(shí)現(xiàn)郵箱驗(yàn)證碼API功能
本文將帶你了解一個(gè)項(xiàng)目如何實(shí)現(xiàn)一個(gè)郵箱驗(yàn)證接口,即一個(gè)可用的發(fā)送郵箱驗(yàn)證碼API和驗(yàn)證驗(yàn)證碼是否正確功能,對(duì)Go實(shí)現(xiàn)郵箱驗(yàn)證碼API詳細(xì)過(guò)程感興趣的朋友一起看看吧2024-06-06
利用go語(yǔ)言編寫(xiě)一個(gè)并發(fā)包
這篇文章主要為大家詳細(xì)介紹了如何利用go語(yǔ)言編寫(xiě)一個(gè)并發(fā)包,適合大部分并發(fā)任務(wù),開(kāi)箱即用,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下2023-10-10

