要检查两个不同日期范围内的重叠,{Start1, End1}
and {Start2, End2}
我正在查:
if ((Start1 <= End2) && (End1 >= Start2))
{
//overlap exists
}
问题是,
如果我有五个日期范围,比较重叠的好方法是什么?。
检查它们是否相互重叠?
如果我有多个日期范围,如何查找这些范围中是否有重叠?
查找是否全部重叠
static bool Overlap(params Tuple<DateTime, DateTime>[] ranges)
{
for (int i = 0; i < ranges.Length; i++)
{
for (int j = i + 1; j < ranges.Length; j++)
{
if (!(ranges[i].Item1 <= ranges[j].Item2 && ranges[i].Item2 >= ranges[j].Item1))
return false;
}
}
return true;
}
查找是否有重叠
static bool Overlap(params Tuple<DateTime, DateTime>[] ranges)
{
for (int i = 0; i < ranges.Length; i++)
{
for (int j = i + 1; j < ranges.Length; j++)
{
if (ranges[i].Item1 <= ranges[j].Item2 && ranges[i].Item2 >= ranges[j].Item1)
return true;
}
}
return false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)