我正在使用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')
);
如果仔细查看上面的示例数据,您会看到2月7日没有计算,并且它在我正在使用的整个日期范围内(1/1/12到4/1 / 12)...所以我需要识别两个缺少2012-02-07的元素(在这种情况下,数组的第2和第3个元素)。
答案 0 :(得分:0)
Interval Trees可能是一个很好的解决方案。
构建间隔树,并检查具有总日期范围[min,max]
的交集是否与间隔树表示的范围重叠。
答案 1 :(得分:0)
您可以按开始日期对范围进行排序,然后遍历排序列表以查找任何间隙。