对于重叠的多个日期范围比较:如何有效地做到这一点? [英] Multiple Date range comparison for overlap: how to do it efficiently?
本文介绍了对于重叠的多个日期范围比较:如何有效地做到这一点?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
要检查是否出现重叠在两个不同的dateranges, {启动1,END1}
和 {START2,END2}
我正在检查:
To check for overlap in two different dateranges, {Start1, End1}
and {Start2, End2}
I am checking:
if ((Start1 <= End2) && (End1 >= Start2))
{
//overlap exists
}
现在的问题是, <击>什么是比较重叠的好办法,如果我让我们觉得五dateranges?击>。
The question is,
what is a good way to compare overlaps if I had let's say five dateranges?.
<打击>检查,看看是否有任何人不互相重叠?击>
如果我有多个日期范围,如何找到如有这些范围重叠?
If I have multiple date ranges, how to find if any of these ranges are overlapping?
推荐答案
要找到,如果所有的重叠
To find if all are overlapping
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;
}
以查找是否存在重叠
to find if any are overlapping
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;
}
这篇关于对于重叠的多个日期范围比较:如何有效地做到这一点?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文