【问题标题】:Cron expression to run the task at 11am finished at 11pm在上午 11 点运行任务的 Cron 表达式在晚上 11 点完成
【发布时间】:2016-12-29 05:09:27
【问题描述】:
我需要 cron 表达式来安排我的任务。任务执行应每天上午 11 点开始,每分钟执行一次,直到晚上 11 点(最后执行时间)。
目前,我不知道如何设置最后一次执行应该在 23:00。
* * 11-23 * * * - 根据这个表达式,任务将从 11:00 运行到 23:59。
* * 11-22 * * *- 根据这个表达式,任务将从 11:00 运行到 22:59。所以错过了 23:00 的最后一次执行。
请告诉我如何解决这个问题。
【问题讨论】:
标签:
java
cron
cron-task
cronexpression
spring-scheduled
【解决方案1】:
我已找到解决此问题的方法。解决方法是创建两个 cron 表达式:
0 * 11-22 * * * - 上午 11 点开始,下午 22:59 结束。
0 0 23 * * * - 此任务每天 23:00 仅开始一次。
所以,我的代码现在看起来像这样:
@Scheduled(cron = "0 * 11-22 * * *")
public void processPerformances() {
// do something();
}
@Scheduled(cron = "0 0 23 * * *")
public void processPerformancesLastTime() {
processPerformances();
}