java - quartz cron 计划输出不符合预期

标签 java cron quartz-scheduler

我只想在工作日(周一至周五)的 23:59:59 安排每日工作。

我使用这个 cron 表达式

“59 59 23 ? * 周一至周五”,

但输出具有星期一的牛肚值

2012 年 8 月 29 日星期三 23:59:59
2012 年 8 月 30 日星期四 23:59:59
2012 年 8 月 31 日星期五 23:59:59
2012 年 9 月 3 日星期一 23:59:59
2012 年 9 月 3 日星期一 23:59:59
2012 年 9 月 3 日星期一 23:59:59

2012 年 9 月 4 日星期二 23:59:59
2012 年 9 月 5 日星期三 23:59:59
2012 年 9 月 6 日星期四 23:59:59
2012 年 9 月 7 日星期五 23:59:59

表达有误吗?需要帮助。

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

`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 个无效日期中的每一天,当前日期之后的“下一个有效时间”是星期一。所以你有三次星期一,这是完全合乎逻辑的。

因此你的日志。

关于java - quartz cron 计划输出不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12176912/

相关文章:

java - 如何使用 MariaDB Connector/J 与 MySQL 建立 SSL 连接?

java - 成功后如何在 servlet 中检索 JSON 对象

java - Quartz Scheduler抢先触发优先级

macos - Mac OSX 10.9.2,启动错误 : "launchctl: Dubious ownership on file (skipping)"

php - 为什么我的 cron 任务在命令行中有效,但在 PLESK 中无效?

java - quartz 和 mysql 的自动模式创建失败并出现 MySQLSyntaxException

java - quartz jdbc 序列化/反序列化对象

java - 失败: JBAS014771: Services with missing/unavailable dependencies in jboss EAP 6. 4

java - 有关 eclipse 中站点概念的问题(尤其是 iviewsite)

go - 如何通过遍历列表来创建多个 CRON 函数