golang每分钟执行一次任务,比如3点21分0秒执行一次,下一次3点22分0秒执行一次,该如何实现?
时间: 2023-05-17 18:04:50 浏览: 140
golang Timer 执行一次,Ticker可以周期的执行
可以使用 time 包中的定时器功能来实现。具体代码如下:
```
import (
"time"
)
func main() {
// 获取当前时间
now := time.Now()
// 计算下一次执行任务的时间
next := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute()+1, 0, 0, now.Location())
// 计算下一次执行任务的时间与当前时间的时间差
duration := next.Sub(now)
// 创建定时器
timer := time.NewTimer(duration)
// 等待定时器到期
<-timer.C
// 执行任务
// ...
// 递归调用自身,实现每分钟执行一次任务
main()
}
```
在上面的代码中,首先获取当前时间,然后计算下一次执行任务的时间,接着计算下一次执行任务的时间与当前时间的时间差,创建定时器并等待定时器到期,最后执行任务并递归调用自身,实现每分钟执行一次任务。
阅读全文