Show/Hide Toolbars

Руководство администратора

Алгоритм расчета рабочего времени между датами

Ссылки Назад Вверх Вперед

Расчет рабочего времени ведется между двумя датами -- Точкой Отсчета и Сроком.

Алгоритм в виде блок-схемы:

Кликните мышью по изображению для просмотра в полном размере

Алгоритм в виде пошаговых схем:

Подготовительные расчеты

1. Если время какой-либо из дат раньше, чем начало рабочего дня, то сдвинем эту дату вперед, на начало рабочего дня.

duedate_1

2. Если время какой-либо из дат позже, чем окончание рабочего дня, то сдвинем эту дату назад, на конец рабочего дня.

duedate_2

3. Если какая-то из дат попадает на выходной день, то перенесем ее на первый следующий рабочий день, на то же время.

 

duedate_3

4. Если Точка Отсчета и Срок попадают на один и тот же рабочий день, то вычислим разницу времени между двумя этими датами. Если получившаяся разница больше длины рабочего дня, то примем ее равной длине рабочего дня. На этом завершим расчет.

duedate_4

Пример:

Начало рабочего дня: 9:00

Конец рабочего дня: 21:00

Длина рабочего дня: 8 часов

Точка Отсчета: 10 августа 2015 10:00

Срок: 10 августа 2015 16:00

Оставшееся время = 6 часов

5. Время, оставшееся в день начала расчета между Точкой Отсчета и концом рабочего дня, назовем Остаток дня отсчета.

duedate_5

6.  Время, оставшееся в день срока между началом рабочего дня и Сроком, назовем Остаток дня срока.

 

 

duedate_6

 

7. Вычислим количество полных рабочих дней, расположенных между Точкой Отсчета и Сроком (то есть количество полных суток, за исключением выходных и праздничных дней).

Пример:

duedate_7

8. Если между Точкой Отсчета и Сроком нет полных рабочих дней

8.1. Если между Точкой Отсчета и Сроком больше суток.

В этом случае в расчете заменяем промежуток времени в 24 часа (сутки) на длину рабочего дня и прибавляем к нему остаток.

 

duedate_8_1

Пример:

Начало рабочего дня: 9:00

Конец рабочего дня: 21:00

Длина рабочего дня: 8 часов

Точка Отсчета: 10 августа 2015 10:00

Срок: 11 августа 2015 16:00

Оставшееся время = 8 часов длина рабочего дня + 6 часов остаток = 14 часов

8.2. Если между Точкой Отсчета и Сроком меньше суток, а сумма остатков дней отсчета и срока больше длины рабочего дня.

В этом случае время, оставшееся между Точкой Отсчета и Сроком, принимаем равным длине рабочего дня.

 

duedate_8_2

Пример:

Начало рабочего дня: 9:00

Конец рабочего дня: 21:00

Длина рабочего дня: 8 часов

Точка Отсчета: 10 августа 2015 12:00

Срок: 11 августа 2015 11:00

Остаток дня отсчета = 9 часов

Остаток дня срока = 2 часа

(9 часов + 2 часа) > 8 часов

Оставшееся время = 8 часов длина рабочего дня

8.3. Если между Точкой Отсчета и Сроком меньше суток, а сумма остатков дней отсчета и срока меньше длины рабочего дня.

В этом случае время, оставшееся между Точкой Отсчета и Сроком, принимаем равным сумме двух остатков.

 

duedate_8_3

Пример:

Начало рабочего дня: 9:00

Конец рабочего дня: 21:00

Длина рабочего дня: 8 часов

Точка Отсчета: 10 августа 2015 17:00

Срок: 11 августа 2015 11:00

Остаток дня отсчета = 4 часа

Остаток дня срока = 2 часа

(4 часа + 2 часа) < 8 часов

Оставшееся время = (4 часа + 2 часа) = 6 часов

9. Если между Точкой Отсчета и Сроком есть один или несколько полных рабочих дней

9.1. Если сумма остатков дней отсчета и срока больше суток.

В этом случае расчет выполняется как в пункте 8.1, но к этому времени прибавляется количество полных рабочих дней между Точкой Отсчета и Сроком (подсчитанное в пункте 7), умноженное на длину рабочего дня.

 

duedate_9_1

Пример:

Начало рабочего дня: 9:00

Конец рабочего дня: 21:00

Длина рабочего дня: 8 часов

Точка Отсчета: 12 августа 2015 11:00

Срок: 18 августа 2015 17:00

Количество полных рабочих дней: 3

Оставшееся время = 8 часов длина рабочего дня + 6 часов остаток + (3 * 8 часов длина рабочего дня) = 38 часов

9.2. Если сумма остатков дней отсчета и срока меньше суток, но больше длины рабочего дня.

В этом случае расчет выполняется как в пункте 8.2, но к этому времени прибавляется количество полных рабочих дней между Точкой Отсчета и Сроком (подсчитанное в пункте 7), умноженное на длину рабочего дня.

 

duedate_9_2

Пример:

Начало рабочего дня: 9:00

Конец рабочего дня: 21:00

Длина рабочего дня: 8 часов

Точка Отсчета: 12 августа 2015 13:00

Срок: 19 августа 2015 12:00

Количество полных рабочих дней: 4

Остаток дня отсчета = 8 часов

Остаток дня срока = 3 часа

(8 часов + 3 часа) > 8 часов

Оставшееся время = 8 часов длина рабочего дня + (4 * 8 часов длина рабочего дня) = 40 часов

9.3. Если сумма остатков дней отсчета и срока меньше длины рабочего дня.

В этом случае расчет выполняется как в пункте 8.3, но к этому времени прибавляется количество полных рабочих дней между Точкой Отсчета и Сроком (подсчитанное в пункте 7), умноженное на длину рабочего дня.

 

duedate_9_3

Пример:

Начало рабочего дня: 9:00

Конец рабочего дня: 21:00

Длина рабочего дня: 8 часов

Точка Отсчета: 13 августа 2015 17:00

Срок: 17 августа 2015 11:00

Количество полных рабочих дней: 1

Остаток дня отсчета = 4 часа

Остаток дня срока = 2 часа

(4 часов + 2 часа) < 8 часов

Оставшееся время = (4 часа + 2 часа) + (1 * 8 часов длина рабочего дня) = 6 часов + 8 часов = 14 часов