Go语言提供了强大的时间处理功能,以下是一些实用技巧:
1. 导入包
首先,确保导入了time
包:
import "time"
2. 获取当前时间
使用time.Now()
获取当前时间:
now := time.Now()
3. 解析时间字符串
使用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
中的格式化字符串与时间字符串必须完全匹配。
4. 格式化时间
使用time.Format()
格式化时间:
const layout = "2006-01-02 15:04:05" t := time.Now() formattedTime := t.Format(layout)
5. 时间间隔
使用time.Duration
表示时间间隔:
duration := time.Second * 5
6. 时间加法
使用Add()
方法为时间添加间隔:
t := time.Now() t = t.Add(duration)
7. 时间减法
使用Sub()
方法为时间减去间隔:
t := time.Now() t = t.Sub(duration)
8. 比较时间
使用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") }
9. 截取时间部分
使用time.Time
的方法截取时间部分:
year, month, day := t.Date() hour, minute, second := t.Clock()
10. 遍历时间
使用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
11. 时区处理
使用time.FixedZone()
和time.LoadLocation()
处理时区:
location, err := time.LoadLocation("Asia/Shanghai") if err != nil { log.Fatal(err) } t := time.Now().In(location)
12. 睡眠
使用time.Sleep()
让当前goroutine睡眠一段时间:
time.Sleep(time.Second * 5)
这些技巧涵盖了Go语言时间处理的基本操作,可以帮助你更有效地处理时间相关的任务。