我正在尝试使用石英调度程序找到每周(特定日期)安排作业的正确方法。 我还需要打印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();
但当然我不喜欢这个解决方案,因为它不完整和丑陋。 所以我的问题是:
quartz和CronExpressionDescriptor之间是否有相关性? 你知道其他框架能够返回cronExpression字符串的人类表示。
您有更好的解决方案吗?
谢谢,
答案 0 :(得分:0)
对我而言,CronExpressionDescriptor是更正确的#34;那个Quartz,因为在linux cron中安排了"星期几"字段范围为0-7,其中0和7等于星期日,然后2等于星期二。
Quartz的范围是1-7,其中1是星期日,7是星期六。
我不知道CronExpressionDescriptor,但是,请尝试搜索返回日期名称(SUN,MON等)的方式,而不是日期编号表示。