CronExpressionDescriptor和QuartzScheduler的兼容性

时间:2015-03-03 09:21:38

标签: java cron quartz-scheduler

我正在尝试使用石英调度程序找到每周(特定日期)安排作业的正确方法。 我还需要打印cron作业的描述,所以我决定使用 CronExpressionDescriptor.getDescription()以使非程序员能够读取表达式的含义。

但是,当我使用cronExpression - 0 15 3时? * 2

CronExpressionDescriptor.getDescription()返回凌晨3:15,仅在 星期二

但是在打电话时

trigger = newTrigger().withIdentity(triggerName, group.getGroupName()).withSchedule(cronSchedule(executionTime)).forJob(job.getKey()).build();      
Date date = scheduler.scheduleJob(job, trigger);

日期 星期一 (2015年3月3日03:15:00美国东部时间2015)

我目前的解决方案是使用

int dayOfWeek = (Integer.valueOf(cronexpression.split(" ")[5])%7);
trigger = newTrigger().withIdentity(triggerName, group.getGroupName()).withSchedule(CronScheduleBuilder.weeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute)).forJob(job.getKey()).build();

但当然我不喜欢这个解决方案,因为它不完整和丑陋。 所以我的问题是:

  1. quartz和CronExpressionDescriptor之间是否有相关性? 你知道其他框架能够返回cronExpression字符串的人类表示。

  2. 您有更好的解决方案吗?

  3. 谢谢,

1 个答案:

答案 0 :(得分:0)

对我而言,CronExpressionDescriptor是更正确的#34;那个Quartz,因为在linux cron中安排了"星期几"字段范围为0-7,其中0和7等于星期日,然后2等于星期二。

Quartz的范围是1-7,其中1是星期日,7是星期六。

我不知道CronExpressionDescriptor,但是,请尝试搜索返回日期名称(SUN,MON等)的方式,而不是日期编号表示。