Сравнение дат дат периода Java - PullRequest
1 голос
/ 07 февраля 2011

Я хотел бы создать функцию в Java, которая будет делать следующее:

  1. Получить список объектов в векторе с полями startDate, endDate
  2. Получить второй список Объектов в векторе с полями startDate, endDate и вернуть true или false, если для каждого периода дат из первого списка (startDate до endDate) существует соответствующий период дат во втором списке.

Однако период даты во втором списке может быть заполнен последовательными датами. Например, Список1 (только с одним объектом): Object1 (Дата начала = 01.01.2010, Дата окончания = 01.01.2013)

Если предоставляется с List2 (2 объекта): Object1 (Дата начала = 01/01/2010, Дата окончания = 01/03/2010) Object2 (Дата начала = 01/03/2010 Дата окончания = 01 / 01/2013) должен вернуть true

Ответы [ 2 ]

2 голосов
/ 07 февраля 2011

Вот вам псевдокод ...

  1. Создать третий список дат начала / окончания
  2. Для каждого начала / конца во втором списке
    • Если перекрывается с любым существующим диапазоном дат в третьем списке, расширьте этот диапазон дат
    • в противном случае просто добавьте его в третий список
  3. Для каждого начала / конца (a, b) в первом списке
    1. Набор покрыт = ложь
    2. Для каждого начала / конца (c, d) в третьем списке
    3. Если (c, d) охватывает (a, b)
      • Набор покрыт = true
    4. Если не покрыто, вернуть false
  4. Вернуть истину

Чтобы определить вышеприведенную часть «перекрытия», вам необходимо рассмотреть следующие случаи:

|-----|
  |-|

  |-----|
|---|

|-----|
    |---|

  |-|
|-----|
0 голосов
/ 07 февраля 2011

Преобразуйте все даты в миллис с эпохи , и пересечение диапазонов становится тривиальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...