package cmd import ( "fmt" "github.com/spf13/cobra" "time" ) var scheduleCommand = &cobra.Command{ Use: "schedule", Run: func(cmd *cobra.Command, args []string) { runSchedule() }, } func runSchedule() { if config.DebugMode.Enable { fmt.Println("调试模式开启,直接触发。") // RUN JOB return } // 获取下一个整点时间 nextHour := time.Now().Truncate(time.Hour).Add(time.Hour) // 计算当前时间到下一个整点的时间差 duration := nextHour.Sub(time.Now()) // 设置定时器,在下一个整点触发 timer := time.NewTimer(duration) // 用无限循环,在每个小时整点执行任务 for { select { case <-timer.C: // 每小时整点执行的代码 fmt.Printf("执行任务,当前时间:%v\n", time.Now().Format("2006-01-02 15:04:05")) // DO JOB. // 重置定时器,设置为1小时后再次触发 timer.Reset(time.Hour) } } }