0

我很难编写一个 cron 表达式来安排周一至周六从上午 4:30 到上午 8:30 的每 15 分钟的事件。

谢谢。

4

2 回答 2

2

我不认为你可以一步解决这个问题,所以一个可用的策略可能是首先通过 crontab 进行粗过滤:

0,15,30,45 4,5,6,7,8 * * 1,2,3,4,5,6 /do-whatever

这几乎没问题,它只会执行 4:00 4:15 和 8:45,所以我们在执行脚本的开头过滤这些:

# Too early?  Then get out
if [ `date +%H%M` -lt 430 ] ; then
   exit 0
fi
# Too late?  Then get out
if [ `date +%H%M` -gt 830 ] ; then
   exit 0
fi
# start of the original script
....
于 2013-08-12T17:47:38.257 回答
0

将需要 3 个单独的 Quartz cron 表达式来精确定义您想要的时间。

0 30 4,5,6,7,8 ? * MON,TUE,WED,THU,FRI,SAT *
0 45 4,5,6,7 ? * MON,TUE,WED,THU,FRI,SAT *
0 0,15 5,6,7,8 ? * MON,TUE,WED,THU,FRI,SAT *

编辑添加:这个 Quartz cron 表达式让您从凌晨 4 点到早上 8 点 45 分,就像fvu 的回答一样。

0 0/15 4-8 ? * MON,TUE,WED,THU,FRI,SAT *
于 2013-08-12T18:26:37.113 回答