繁体   English   中英

Quartz cron计划输出不如预期

[英]Quartz cron schedule output not as expected

我想在工作日(星期一 - 星期五)23:59:59安排一份日常工作。

我用这个cron表达式

“59 59 23?* MON-FRI”,

但是星期一的输出有肚子值

8月29日星期三23:59:59 ICT 2012
2008年8月30日星期四23:59:59 ICT 2012
2008年8月31日星期五23:59:59 ICT 2012
星期一03月03日23:59:59 ICT 2012
星期一03月03日23:59:59 ICT 2012
星期一03月03日23:59:59 ICT 2012
Tue Sep 04 23:59:59 ICT 2012
截至9月5日23:59:59 ICT 2012
Thu Sep 06 23:59:59 ICT 2012
2008年9月7日星期五23:59:59 ICT 2012

表达错了吗? 需要帮忙。

我通过特定日期循环获取此输出,这里是代码

`try {
    CronExpression ce = new CronExpression(59 59 23 ? * MON-FRI);

    Calendar start = Calendar.getInstance();
    start.setTime(new Date());

    Calendar end = Calendar.getInstance();
    Date endDate = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse("Fri Sep 29 23:59:59 ICT 2012");
            end.setTime(endDate);

    for (; !start.after(endDate); start.add(Calendar.DATE, 1)) {
       Date current = start.getTime();

         System.out.println(ce.getNextValidTimeAfter(current));

     }
 } catch (ParseException ex) {
            Logger.getLogger(HelloJob.class.getName()).log(Level.SEVERE, null, ex);
        }

}`

问题不在你的规则或Quartz中,没关系,你可以使用它。

问题出在您的测试代码中。

for (; !start.after(endDate); start.add(Calendar.DATE, 1)) {
     Date current = start.getTime();
     System.out.println(ce.getNextValidTimeAfter(current));
}

您不是在有效日期上迭代,而是在startDateendDate之间的所有日子。

循环内容也被称为无效日期,对于这2个无效日期中的每一天,当前日期之后的“下一个有效时间”是星期一。 所以星期一你有三次,这是完全逻辑的。

因此你的日志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM