时间类型 time.Time

const (
    Nanosecond  Duration = 1
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
)
time.Now() 当前时间
 year := now.Year()     //年
    month := now.Month()   //月
    day := now.Day()       //日
    hour := now.Hour()     //小时
    minute := now.Minute() //分钟
    second := now.Second() //秒
now:=time.Now().Unix() 时间戳
now:=time.Now().UnixNano() 纳秒时间戳
later := now.Add(time.Hour*1) 添加一小时
later := now.AddDate(-1, 0,0) 添加日期 年 月 日
now := time.Now()
year, month, day := now.Date() 返回年月日 2020 October 11
now.Clock() 时分秒
now.YearDay() 一年中第几天
now.Weekday() 星期几 sunday
fmt.Println(now.Format("2006-01-02 15:04:05"))//格式化时间
loc, _ := time.LoadLocation("Asia/Shanghai") 加载时区
timeObj, _ := time.ParseInLocation("2006/01/02 15:04:05", "2019/08/04 14:15:20", loc) 转换成时间类型
  • 定时器
//执行一次
    timer := time.NewTimer(1*time.Second)//5s以后
    <-timer.C
    fmt.Println(time.Now().Format("2006-01-02 15:04:05"))

    timer.Stop() //停止

    timer.Reset(1*time.Second) //重置

    <-time.After(2 * time.Second)//延迟2秒
    fmt.Println(time.Now().Format("2006-01-02 15:04:05"))

    c := make(chan int)
    time.AfterFunc(1*time.Second, func() {//延迟一秒并执行函数
        fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
        c<-1
    })
    <-c

//每两秒执行一次
var ch chan int
    ticker := time.NewTicker(2*time.Second)
    go func() {
        for range ticker.C {
            fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
        }
        ch <- 1
    }()
    <-ch
//每5秒执行一次
c := time.Tick(5 * time.Second)
    for {
        <- c
        go func() {
            fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
        }()
    }
//重复执行放在里面
var wg sync.WaitGroup//保证主 goroutine 不退出
    wg.Add(1)
    //具体执行
    wg.Wait()
作者:Yoby  创建时间:2020-09-12 00:03
 更新时间:2024-12-05 13:26