换算

  1. //获取当前时间,返回Time类型
  2. func Now() Time
  3. Unix(sec int64, nsec int64) Time
  4. //根据秒数和纳秒,返回Time类型
  5. Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time
  6. //设置年月日返回,Time类型
  7. Since(t Time) Duration//返回与当前时间的时间差
  8. func (t Time) UTC() Time
  9. func (t Time) Unix() int64
  10. func (t Time) UnixNano() int64

毫秒和纳秒是两的时间单位 1秒=1000毫秒 1毫秒=1000微秒 1微秒=1000纳秒

  1. fmt.Println(time.Now().Unix()) //获取当前时间戳 单位是秒
  2. fmt.Println(time.Now().UnixNano()) //获取当前时间抽 单位是纳秒
  3. fmt.Println(time.Now().UnixNano() / 1e6) //将纳秒转换为毫秒
  4. fmt.Println(time.Now().UnixNano() / 1e9) //将纳秒转换为秒
  5. fmt.Println(time.Unix(time.Now().UnixNano()/1e9, 0)) //将毫秒转换为 time 类型
  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func main() {
  7. t := time.Now().UnixNano()
  8. fmt.Println(t)
  9. fmt.Println(t/ 1e6)
  10. fmt.Println(t/ 1e9)
  11. t = time.Now().Unix()
  12. fmt.Println(t)
  13. }

打印结果

  1. 1579428203323919052
  2. 1579428203323
  3. 1579428203
  4. 1579428203

常用方法

  1. //时间类型比较,是否在Time之后
  2. After(u Time) bool
  3. //时间类型比较,是否在Time之前
  4. Before(u Time) bool
  5. //比较两个时间是否相等
  6. Equal(u Time) bool
  7. //判断时间是否为零值,如果sec和nsec两个属性都是0的话,则该时间类型为0
  8. IsZero() bool
  9. //返回年月日,三个参数
  10. Date() (year int, month Month, day int)
  11. //返回年份
  12. Year() int
  13. //返回月份.是Month类型
  14. Month() Month
  15. //返回多少号
  16. Day() int
  17. //返回星期几,是Weekday类型
  18. Weekday() Weekday
  19. //返回年份,和该填是在这年的第几周.
  20. ISOWeek() (year, week int)
  21. //返回小时,分钟,秒
  22. Clock() (hour, min, sec int)
  23. //返回小时
  24. Hour() int
  25. //返回分钟
  26. Minute() int
  27. //返回秒数
  28. Second() int
  29. //返回纳秒
  30. Nanosecond() int

计时器

  1. // 使用AfterFunc
  2. time.AfterFunc(5 * time.Minute, func() {
  3. fmt.Printf("expired")
  4. }
  5. timer := time.NewTimer(5 * time.Minute)
  6. <-timer.C
  7. fmt.Printf("expired")

Newtimer

初始化三小时30分钟的定时器

  1. t := time.Newtimer(3*time.Hour + 30*time.Minute)

重置定时器

  1. func (t *Timer) Reset(d Duration) bool

停止定时器,如果返回false,说明该定时器在之前已经到期或者已经被停止了,反之返回true。

  1. func (t *Timer) Stop() bool

计算函数执行时间

  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func test( s time.Time) {
  7. sum := 0
  8. for i := 0; i < 100000000; i++ {
  9. sum++
  10. }
  11. elapsed := time.Since(s)
  12. fmt.Println("该函数执行完成耗时:", elapsed)
  13. }
  14. func main() {
  15. test(time.Now())
  16. }