Java 0/0的石英cron表达式

Java 0/0的石英cron表达式,java,quartz-scheduler,cronexpression,Java,Quartz Scheduler,Cronexpression,作为输入验证的一部分,我在考虑这是否是一个真正有效的cron表达式,以及它将如何执行: 0 0/0 * * * ? Quartz验证返回true org.quartz.CronExpression.isValidExpression("0 0/0 * * * ?") 那么,这会一直运行吗,从来不会,每小时或每分钟…?更多信息请参阅文档。我猜表达式0 0/0***?表示每小时一次(即0/0不表示每分钟)。但是,如果您需要所有时间(即每秒钟),可以使用***根据文档: /-用于指定增量。例如,

作为输入验证的一部分,我在考虑这是否是一个真正有效的cron表达式,以及它将如何执行:

0 0/0 * * * ?
Quartz验证返回true

org.quartz.CronExpression.isValidExpression("0 0/0 * * * ?")
那么,这会一直运行吗,从来不会,每小时或每分钟…?

更多信息请参阅文档。我猜表达式
0 0/0***?
表示每小时一次(即
0/0
不表示每分钟)。但是,如果您需要所有时间(即每秒钟),可以使用
***

根据文档:

  • /
    -用于指定增量。例如,秒字段中的“0/15”表示“秒0、15、30和45”。秒字段中的“5/15”表示“秒5、秒20、秒35和秒50”。您还可以在“”字符之后指定“/”—在本例中,“”相当于在“/”之前有“0”。““月日”字段中的“1/3”表示“从月的第一天开始,每3天进行一次火灾”
这意味着
0
在这种情况下没有意义。然而,似乎忽略了它,只是放弃了该值,有效地将该表达式视为:

0 0 * * * ?
如果您感到好奇,将丢弃无效的
0
值:

    if ((incr == 0 || incr == -1) && val != ALL_SPEC_INT) {
        if (val != -1) {
            set.add(Integer.valueOf(val));
        } else {
            set.add(NO_SPEC);
        }

        return;
    }

您可以使用以下方法查找结果:

因此,
0 0/0***?
将以每小时0分0秒的速度运行

try {
        CronTriggerImpl cron = new CronTriggerImpl();

        cron.setStartTime(new Date());
        cron.setCronExpression("0 0/0 * * * ?");

        BaseCalendar calendar = new BaseCalendar();
        List<Date> result = TriggerUtils.computeFireTimesBetween(cron, calendar, new Date(),DateBuilder.futureDate(1, IntervalUnit.DAY));

        for (Date date : result) {
            System.out.println(date);
        }

    } catch (ParseException e) {
        e.printStackTrace();
    }
Thu Apr 05 18:00:00 CST 2012
Thu Apr 05 19:00:00 CST 2012
Thu Apr 05 20:00:00 CST 2012
Thu Apr 05 21:00:00 CST 2012
Thu Apr 05 22:00:00 CST 2012
Thu Apr 05 23:00:00 CST 2012
Fri Apr 06 00:00:00 CST 2012
Fri Apr 06 01:00:00 CST 2012
Fri Apr 06 02:00:00 CST 2012
Fri Apr 06 03:00:00 CST 2012
Fri Apr 06 04:00:00 CST 2012
.......................