1 获取当前时间

  1. package main
  2. import (
  3. "fmt"
  4. "reflect"
  5. "time"
  6. )
  7. func main() {
  8. // 2022-01-23 11:55:39.365838 +0800 CST m=+0.000077818 time.Time
  9. fmt.Println(time.Now(), reflect.TypeOf(time.Now()))
  10. // 1642910139 int64
  11. fmt.Println(time.Now().Unix(), reflect.TypeOf(time.Now().Unix()))
  12. // 获取间隔时间
  13. start := time.Now()
  14. time.Sleep(time.Second * 2)
  15. // 2.001484829s time.Duration
  16. fmt.Println(time.Since(start), reflect.TypeOf(time.Since(start)))
  17. }

2 定时器

(1) Timer

  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func main() {
  7. // 1.timer基本使用
  8. //timer1 := time.NewTimer(2 * time.Second)
  9. //t1 := time.Now()
  10. //fmt.Printf("t1:%v\n", t1)
  11. //t2 := <-timer1.C
  12. //fmt.Printf("t2:%v\n", t2)
  13. // 2.验证timer只能响应1次
  14. //timer2 := time.NewTimer(time.Second)
  15. //for {
  16. // <-timer2.C
  17. // fmt.Println("时间到")
  18. //}
  19. // 3.timer实现延时的功能
  20. //(1)
  21. //time.Sleep(time.Second)
  22. //(2)
  23. //timer3 := time.NewTimer(2 * time.Second)
  24. //<-timer3.C
  25. //fmt.Println("2秒到")
  26. //(3)
  27. //<-time.After(2*time.Second)
  28. //fmt.Println("2秒到")
  29. // 4.停止定时器
  30. //timer4 := time.NewTimer(2 * time.Second)
  31. //go func() {
  32. // <-timer4.C
  33. // fmt.Println("定时器执行了")
  34. //}()
  35. //b := timer4.Stop()
  36. //if b {
  37. // fmt.Println("timer4已经关闭")
  38. //}
  39. // 5.重置定时器
  40. timer5 := time.NewTimer(3 * time.Second)
  41. timer5.Reset(1 * time.Second)
  42. fmt.Println(time.Now())
  43. fmt.Println(<-timer5.C)
  44. for {
  45. }
  46. }

(2) Ticker

时间到了,多次执行

  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func main() {
  7. // 1.获取ticker对象
  8. ticker := time.NewTicker(1 * time.Second)
  9. i := 0
  10. // 子协程
  11. go func() {
  12. for {
  13. i++
  14. fmt.Println(<-ticker.C)
  15. if i == 5 {
  16. //停止
  17. ticker.Stop()
  18. }
  19. }
  20. }()
  21. for {
  22. }
  23. }