Определить, если две задачи сталкиваются в Java - PullRequest
0 голосов
/ 17 марта 2019

У меня есть следующий случай: две задачи, A и B , каждая с заданным временным окном, в котором указывается самое раннее время запуска задачи, называемое earliestStart ипоследнее время задача может закончиться, называется latestEnd.Кроме того, у заданий есть заданная duration, которая равна или меньше latestEnd - earliestStart для этой конкретной задачи.Например, задание A должно быть выполнено в течение 08:00-10:00, а продолжительность составляет 1 час, а задание B должно быть выполнено в течение 08:50-09:55, а продолжительность - 1 час.Как я могу легко проверить это в Java, это правильно?(чтобы доказать, что они не перекрываются):

taskA.earliestStart + taskA.duration < taskB.latestEnd - taskB.duration 
|| taskB.earliestStart + taskB.duration < taskA.latestEnd - taskA.duration

1 Ответ

1 голос
/ 18 марта 2019

Используйте LocalTime для представления времени суток без даты и без часового пояса.

LocalTime aStart = LocalTime.of( 8 , 0 ) ;
Duration aDuration = Duration.ofHours( 1 ) ;
LocalTime aStop = aStart.plus( aDuration ) ;

Сравните с использованием методов isBefore, isAfter и equals.

...