我很难编写一个 cron 表达式来安排周一至周六从上午 4:30 到上午 8:30 的每 15 分钟的事件。
谢谢。
我不认为你可以一步解决这个问题,所以一个可用的策略可能是首先通过 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
....
将需要 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 *