我想安排一个任务在每个月的最后一天上午10:10运行。cron表达式是010l*
现在的问题是
CronSequextGenerator
正在为'L'值抛出NumberFormatExc0019
。这意味着Spring的CronSequextGenerator
不支持这种表达式。但是如果我只通过数字,它工作正常。
以下是完整的堆栈跟踪:
Exception in thread "main" java.lang.NumberFormatException: For input string: "L"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.valueOf(Integer.java:582)
at org.springframework.scheduling.support.CronSequenceGenerator.getRange(CronSequenceGenerator.java:324)
at org.springframework.scheduling.support.CronSequenceGenerator.setNumberHits(CronSequenceGenerator.java:297)
at org.springframework.scheduling.support.CronSequenceGenerator.setDays(CronSequenceGenerator.java:275)
at org.springframework.scheduling.support.CronSequenceGenerator.setDaysOfMonth(CronSequenceGenerator.java:266)
at org.springframework.scheduling.support.CronSequenceGenerator.parse(CronSequenceGenerator.java:239)
at org.springframework.scheduling.support.CronSequenceGenerator.<init>(CronSequenceGenerator.java:81)
at org.springframework.scheduling.support.CronTrigger.<init>(CronTrigger.java:54)
at org.springframework.scheduling.support.CronTrigger.<init>(CronTrigger.java:44)
at com.hcdc.coedp.datantar.scheduler.SchedulerUtil.start(SchedulerUtil.java:75)
at com.hcdc.coedp.datantar.scheduler.SchedulerUtil.changeTrigger(SchedulerUtil.java:106)
at com.hcdc.coedp.datantar.scheduler.SchedulingService.scheduleTransfer(SchedulingService.java:70)
at com.hcdc.coedp.datantar.scheduler.Scheduler.schedule(Scheduler.java:107)
at main.Main.main(Main.java:47)
Spring不支持月的最后一天。请参阅CronSequenceGenerator的javadoc。
请检查此链接Cron Maker
在文本框中给出您的表达式
0 10 10 L*?
此时间表在每月最后一天上午10:10运行:
@Scheduled(cron = "0 10 10 28-31 * ?")
public void doStuffOnLastDayOfMonth() {
final Calendar c = Calendar.getInstance();
if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) {
// do your stuff
}
}
我使用石英调度和Spring Batch,我需要在每个月的最后一个星期四运行一个特定的工作。 有可能创建这样的Quartz cron表达式吗? 谢谢
问题内容: 我在计算本月下一个最后一天何时发送预定的通知时遇到问题。 这是我的代码: 这是导致问题的线,我相信: 如何使用日历正确设置下个月的通知的最后一天? 问题答案: 这将返回当前月份的实际最大值。例如,现在是leap年的2月,因此它返回29作为。
null 我怎么告诉Quartz?我想做三个表达式,例如“如果它是一个工作日”,“如果它是一个星期一”,“如果它是一个星期一”,“如果它是一个星期一”,“如果它是一个星期一”,但我不能合并月份的日期和星期的日期字段(我总是得到一个无效的cron表达式错误)
问题 你需要去找出一个月的最后一天,但是一年中的各月并没有一个固定时间表。 解决方案 利 用JavaScript 的日期下溢来找到给出月份的第一天: now = new Date lastDayOfTheMonth = new Date(1900+now.getYear(), now.getMonth()+1, 0) 讨论 JavaScript 的日期构造函数成功地处理溢出和下溢情况,使日期的计算
条件是这样的 和为模板的when and then部分指定的操作: 下面是在将其传递给DRLParser之前编译好的drl: 和我在控制台中看到的编译器错误:
我正在尝试提出一个CRON表达式,它允许我在一个月内的每个星期一运行一个石英触发器,第一个除外。 参考文献: http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron