确定多个重叠范围的日期范围的“基准”

时间:2019-04-08 08:09:17

标签: php date

我正在寻找一种将几种日期范围转换为其“基本”范围的算法。

此基本级别表示,它具有最少的单独日期范围数。因此,重叠范围或背对背范围应合并为一个范围。

使用两个范围进行比较非常简单:

if (endA >= startB && endB >= startA) > Overlap and merge them

但是,如果mergedAB支持第三个日期范围C ...

A: 2 April - 10 April
B: 5 April - 14 April
C: 15 April - 25 April
D: 28 April - 1 May

这将导致:

2 April - 25 April
28 April - 1 May

有关如何解决此算法的任何指示? 如何确定终止信号的时间,例如何时到达基数?

1 个答案:

答案 0 :(得分:0)

如果原始列表可以产生多个范围(样本数据表明),则按开始日期顺序处理原始列表很重要。

第一个元素A成为baseRange,然后将后续元素与 baseRange 合并,而不与先前的元素合并。当if返回false时,使用范围完成此操作。