Go語言提供了強大的時間處理功能,以下是一些實用技巧:
首先,確保導(dǎo)入了time
包:
import "time"
使用time.Now()
獲取當前時間:
now := time.Now()
使用time.Parse()
解析時間字符串:
const layout = "2006-01-02 15:04:05"
t, err := time.Parse(layout, "2022-01-01 12:00:00")
if err != nil {
log.Fatal(err)
}
注意:layout
中的格式化字符串與時間字符串必須完全匹配。
使用time.Format()
格式化時間:
const layout = "2006-01-02 15:04:05"
t := time.Now()
formattedTime := t.Format(layout)
使用time.Duration
表示時間間隔:
duration := time.Second * 5
使用Add()
方法為時間添加間隔:
t := time.Now()
t = t.Add(duration)
使用Sub()
方法為時間減去間隔:
t := time.Now()
t = t.Sub(duration)
使用Before()
、After()
和Equal()
方法比較時間:
t1 := time.Now()
t2 := t1.Add(time.Second * 10)
if t1.Before(t2) {
fmt.Println("t1 is before t2")
} else if t1.After(t2) {
fmt.Println("t1 is after t2")
} else {
fmt.Println("t1 is equal to t2")
}
使用time.Time
的方法截取時間部分:
year, month, day := t.Date()
hour, minute, second := t.Clock()
使用time.Tick()
或time.AfterFunc()
遍歷時間:
ticker := time.Tick(time.Second * 1)
for t := range ticker {
fmt.Println(t)
}
done := make(chan bool)
go func() {
time.Sleep(5 * time.Second)
done <- true
}()
<-done
使用time.FixedZone()
和time.LoadLocation()
處理時區(qū):
location, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
log.Fatal(err)
}
t := time.Now().In(location)
使用time.Sleep()
讓當前goroutine睡眠一段時間:
time.Sleep(time.Second * 5)
這些技巧涵蓋了Go語言時間處理的基本操作,可以幫助你更有效地處理時間相關(guān)的任務(wù)。