Вот пример прогонов за двухчасовой период:
Код: Выделить всё
Run 1:
Thu Jul 04 06:16:00 EDT 2013
Run 2:
Thu Jul 04 06:32:00 EDT 2013
Run 3:
Thu Jul 04 06:48:00 EDT 2013
Run 4:
Thu Jul 04 07:16:00 EDT 2013
Run 5:
Thu Jul 04 07:32:00 EDT 2013
Run 6:
Thu Jul 04 07:48:00 EDT 2013
Я работаю над логикой, чтобы определить, сколько раз задание будет выполняться в день с учетом переменного времени начала. Я пытался сделать это с помощью некоторых вычислений, но затем в конечном итоге положился на этот фрагмент кода, который использует календарь, чтобы выяснить, сколько пробегов осталось в день:
Код: Выделить всё
public int getRunsLeftInDay(int runIntervalMinutes, int offset){
/*
Offset is when the job starts
Currently runIntervalMinutes = 16 && offset = 16
So start 16 minutes after the hour and run on 16 minute interval
*/
/*
This method is tested returns proper next run date, basically gives
the next 16 past || 32 past || 48 past time that will occur
*/
Date nextRunDt = this.getNextRun(runIntervalMinutes, offset);
//Determine last run per hour
int lastRunMinute = (60/runIntervalMinutes) * runIntervalMinutes;
int runCount = 0;
Calendar cal = Calendar.getInstance();
cal.setTime(nextRunDt);
int currentDay = cal.get(Calendar.DAY_OF_YEAR);
while(cal.get(Calendar.DAY_OF_YEAR) == currentDay){
runCount++; //count first run since calendar is set to nextRunDt
if(cal.get(Calendar.MINUTE) == lastRunMinute){
cal.add(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, offset);
}else{
cal.add(Calendar.MINUTE, runIntervalMinutes);
}
}
return runCount;
}
По сути, у меня есть два вопроса:
1. Достаточно ли этого метода определения количества пробежек в день?
2. Как мне это сделать, используя вычисления даты и времени?
Подробнее здесь: https://stackoverflow.com/questions/174 ... ours-today
Мобильная версия