cron 这个包,它实现了 cron 规范解析器和任务运行器
Cron 特殊字符
- 星号 ( * )
- 星号表示将匹配字段的所有值
- 斜线 ( / )
- 斜线用户 描述范围的增量,表现为 “N-MAX/x”,first-last/x 的形式,例如 3-59/15 表示此时的第三分钟和此后的每 15 分钟,到59分钟为止。即从 N 开始,使用增量直到该特定范围结束。它不会重复
- 逗号 ( , )
- 逗号用于分隔列表中的项目。例如,在 Day of week 使用“MON,WED,FRI”将意味着星期一,星期三和星期五
- 连字符 ( - )
- 连字符用于定义范围。例如,9 - 17 表示从上午 9 点到下午 5 点的每个小时
- 问号 ( ? )
- 不指定值,用于代替 “ * ”,类似 “ _ ” 的存在,不难理解
预定义的 Cron 时间表
| 输入 | 简述 | 相当于 |
|---|---|---|
| @yearly (or @annually) | 1月1日午夜运行一次 | 0 0 0 1 1 * |
| @monthly | 每个月的午夜,每个月的第一个月运行一次 | 0 0 0 1 |
| @weekly | 每周一次,周日午夜运行一次 | 0 0 0 0 |
| @daily (or @midnight) | 每天午夜运行一次 | 0 0 0 * |
| @hourly | 每小时运行一次 | 0 0 |
package mainimport ("fmt""time")func main() {f2()}func f1() {// 1.timer基本使用timer1 := time.NewTimer(2 * time.Second)t1 := time.Now()fmt.Printf("t1---------------------------------------:%v\n", t1)t2 := <-timer1.Cfmt.Printf("t2---------------------:%v\n", t2)}func f2() {// 2.验证timer只能响应1次timer2 := time.NewTimer(time.Second)for {<-timer2.Cfmt.Println("时间到")}}func f3() {// 3.timer实现延时的功能time.Sleep(time.Second)timer3 := time.NewTimer(2 * time.Second)<-timer3.Cfmt.Println("2秒到")<-time.After(2 * time.Second)fmt.Println("2秒到")}func f4() {// 4.停止定时器timer4 := time.NewTimer(2 * time.Second)go func() {<-timer4.Cfmt.Println("定时器执行了")}()b := timer4.Stop()if b {fmt.Println("timer4已经关闭")}}func f5() {//// 5.重置定时器timer5 := time.NewTimer(3 * time.Second)timer5.Reset(1 * time.Second)fmt.Println(time.Now())fmt.Println(<-timer5.C)}
