如何在JavaSpring中每隔一个星期一和给定的时间安排任务
有没有办法在春季安排一项任务,让它每隔一个星期一在给定的时间(比如午夜)运行一次?我知道使用cron在每周一午夜运行任务看起来像是如何在JavaSpring中每隔一个星期一和给定的时间安排任务,java,spring,cron,scheduled-tasks,Java,Spring,Cron,Scheduled Tasks,有没有办法在春季安排一项任务,让它每隔一个星期一在给定的时间(比如午夜)运行一次?我知道使用cron在每周一午夜运行任务看起来像是0**MON,但对于我来说,如何处理“每一个其他的”周一变得有些模糊 需要明确的是:如果我在2021年6月6日星期日部署了我的应用程序,我希望任务在2021年6月7日、2021年6月21日、2021年7月5日午夜运行 像0**MON/2这样的东西有用吗?或者我应该采取不同的方法,也许使用不同于cron的东西 任何帮助都将不胜感激不,Cron在JAVA中没有这样的功能。
0**MON
,但对于我来说,如何处理“每一个其他的”周一变得有些模糊
需要明确的是:如果我在2021年6月6日星期日部署了我的应用程序,我希望任务在2021年6月7日、2021年6月21日、2021年7月5日午夜运行
像0**MON/2
这样的东西有用吗?或者我应该采取不同的方法,也许使用不同于cron的东西
任何帮助都将不胜感激不,Cron在JAVA中没有这样的功能。它在linux和unix机器中有一些解决方法,但在JAVA中没有 但是,您可以通过使用每月的几周以编程方式实现它
Calendar c = Calendar.getInstance();
if(c.get(Calendar.WEEK_OF_MONTH) % 2 != 0) {
//execute job
} else {
//not execute job just skip operation
}
上述代码在一个月的所有奇数周内执行。假设一个月有5周,这将在该月的1、3和5周内运行,并将在下个月的第一周再次运行
如果您非常希望它一个月只运行两次,那么可以通过检查一个月的一周是否大于4来阻止它,并阻止它。(*我还没有检查,试试看)
谢谢你的回答,我很可能会用代码而不是cron表达式来完成,但是你发布的代码片段并不能满足我的要求-如果有一个月有5个星期一,我希望我的工作在该月的第一、第三、第五个星期一进行,然后在下一个月的第二、第四个星期一进行。是的,这就是问题所在,因为矿山将在第一个月的第一、第三和第五日运行,并将在下个月的第一日再次运行。祝你一切顺利
Calendar c = Calendar.getInstance();
if(c.get(Calendar.WEEK_OF_MONTH) % 2 != 0 && !c.get(Calendar.WEEK_OF_MONTH)>4) {
//execute job
} else {
//not execute job just skip operation
}