2009-08-14 7 views
0

Je suis probablement juste un idiot - ça a été une longue journée! J'ai mal compris quelque chose dans ma première incursion dans Quartz ...Je ne comprends pas getNextIncludedTime() dans Quartz

Donné ce code:

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++; 
} 

Je pense qu'il y aura au plus un inclus dans le temps de la sortie, comme la fenêtre de temps est 10ms et les heures comprises dans le calendrier sont espacées de 10 minutes.

Mais quand je le lance:

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

S'il vous plaît aider!

Répondre

1

Oui, juste moi étant un abruti.

Les calendriers spécifient des heures EXCLUES.

J'aurais dû utiliser un CronTrigger pour spécifier les heures que je voulais inclure. Le code devrait ressembler plus à ceci ...

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++; 
} 

Qui donne la sortie que j'attendais.

Starting at 1250798091337 
1:1250798400000 
2:1250799000000 
Questions connexes