2012-02-28 1 views
0

Я работаю на PHP, и у меня есть список диапазонов дат. Мне нужен элегантный способ взглянуть между самыми ранними и последними датами в диапазоне и застраховать каждый день один из диапазонов. Например:Нужна функция PHP, обеспечивающая учет всех дат в пределах ряда диапазонов дат

$dates = array( array('2012-01-01', '2012-01-10'), 
       array('2012-01-11', '2012-02-06'), 
       array('2012-02-08', '2012-03-01'), 
       array('2012-03-02', '2012-04-01') 
      ); 

Если вы внимательно посмотрите на мои данные образца выше, вы увидите, что 7 февраля не учитывается, и она попадает в общий диапазон дат, я работаю с (1/1/12 - 4/1/12) ... поэтому мне нужно идентифицировать оба элемента, которые фланкируют отсутствующие 2012-02-07 (в данном случае 2-й и 3-й элементы массива).

ответ

0

Interval Trees может быть хорошим решением.

Создайте дерево интервалов и проверьте, пересекает ли пересечение с общим диапазоном дат [min,max] диапазон, представленный деревом интервалов.

0

Вы можете отсортировать диапазоны по дате начала, а затем пройти список сортировки, чтобы искать любые пробелы.

Смежные вопросы