Определение пробегов в день (определенные минуты часа, остальные часы сегодня)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Определение пробегов в день (определенные минуты часа, остальные часы сегодня)

Сообщение Anonymous »

Я выполняю задание каждые 16 минут в течение часа (3 запуска). Задание будет выполняться в 16 минут, 32 часа и 48 часов. Он не будет распространяться на следующий час.

Вот пример прогонов за двухчасовой период:

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»