【问题标题】:I don't understand getNextIncludedTime() in Quartz我不明白 Quartz 中的 getNextIncludedTime()
【发布时间】:2009-08-14 19:31:55
【问题描述】:

我可能只是个白痴 - 这真是漫长的一天!我在第一次涉足 Quartz 时误解了一些东西......

鉴于此代码:

DateTime dt = new DateTime();
dt = dt.withDayOfMonth(20);

Calendar cal = new CronCalendar("0 0/10 * * * ?" );
long start = dt.getMillis();
System.out.println("Starting at " + start);
long end = start + 10;
long current = start;
int i = 0;
while (current < end) {
  if (i > 0) {
    System.out.println(i + ":" + current);
  }
  long next = cal.getNextIncludedTime(current);
  current = next;
  i++;
}

我希望输出中最多包含一个时间,因为时间窗口是 10 毫秒,而日历中包含的时间相隔 10 分钟。

但是当我运行它时:

Starting at 1250796103004
1:1250796103005
2:1250796103006
3:1250796103007
4:1250796103008
5:1250796103009
6:1250796103010
7:1250796103011
8:1250796103012
9:1250796103013

请帮忙!

【问题讨论】:

    标签: java quartz-scheduler semantics crontrigger


    【解决方案1】:

    是的,我就是个笨蛋。

    日历指定排除时间。

    我应该使用 CronTrigger 来指定我想要包含的时间。代码应该看起来更像这样......

    CronTrigger cal = new CronTrigger("Test", "Test", "0 0/10 * * * ?" );
    ...
    end = start + 1000000;
    ...
    while (current < end) {
      if (i > 0) {
      System.out.println(i + ":" + current);
      }
      Date next = cal.getFireTimeAfter(new Date(current));
      current = next.getTime();
      i++;
    }
    

    这给出了我期望的输出。

    Starting at 1250798091337
    1:1250798400000
    2:1250799000000
    

    【讨论】:

      猜你喜欢
      • 2013-11-06
      • 1970-01-01
      • 2021-05-13
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 2017-03-23
      • 1970-01-01
      相关资源
      最近更新 更多