Добавление рабочих часов в Java DateTime

Для системы отслеживания проблем мне необходимо рассчитать время ответа на запрос. Таймер времени ответа должен работать только в рабочее время. Какой алгоритм/библиотеку следует использовать для этой задачи? (Конечно, я знаю о Joda-Time или ObjectLab Kit, но не смог найти ничего полезного в моей задаче. Я что-то пропускаю?)

Пример:

  • Рабочие часы: 9 утра - 5 вечера (8 часов в день)
  • Максимальное время отклика: 16 часов

Метод может выглядеть примерно так:

DateTime calculateResponseTime(DateTime issueReportedAt)

Я приведу некоторые возможные входные данные и результаты в качестве примера:

  • Пн, 2011-09-19, 13:00 - > ср., 2011-09-21, 13:00
  • Пн, 2011-09-19, 18:05 - > Тю, 2011-09-22, 9:00:00
  • пт, 2011-09-23, 14:00 - > Tue, 2011-09-27, 14:00
-121--109404- Как сортировать объекты javascript по их свойствам, указав свойство Существует множество ответов на подобные вопросы, в которых описывается, как реализовать пользовательскую функцию сортировки для сортировки массива Тем не менее, мне было интересно, может ли это быть...

Существует множество ответов на SO для аналогичных вопросов, которые описывают, как реализовать пользовательскую функцию сортировки для сортировки массива объектов javascript.

Однако мне было интересно, можно ли реализовать более абстрактную пользовательскую сортировку, которая позволила бы передать имя свойства объектов, по которым я хочу выполнить сортировку. Это может спасти меня от необходимости реализовывать очень похожие функции снова и снова.

Так что если бы у меня был конструктор объекта, как:

function Car(mph, cc) {
    this.maxSpeed = mph;
    this.engineSize = cc;
}

, то вместо реализации двух функций сортировки:

function sortCarsOnMaxSpeed(a, b) { return a.maxSpeed - b.maxSpeed; }
function sortCarsOnEngineSize(a, b) { return a.engineSize - b.engineSize; }

я мог бы иметь какую-то родовую функцию, такую как:

function sortObjectsOnProperty(a, b, property) {
    return a[property] - b[property];
}

, но пользовательская сортировка, кажется, принимает только 2 аргументы.

Любые предложения о том, как я мог это сделать?

Большое спасибо.

5
задан Joe 18 September 2011 в 16:23
поделиться