相关疑难解决方法(0)

确定两个日期范围是否重叠

给定两个日期范围,确定两个日期范围是否重叠的最简单或最有效的方法是什么?

举个例子,假设我们有通过日期时间变量表示的范围StartDate1EndDate1 StartDate2EndDate2.

language-agnostic math datetime

1180
推荐指数
16
解决办法
38万
查看次数

如何检查DateTime周期的交集

我有四个DateTime对象.A1,A2和B1,B2.

我需要知道A1-A2期间与期间B1-B2不相交.但我不想编写脏代码,就像许多块一样.

if (A1 < B1 && A2 > B1)
{
    return false;
}
Run Code Online (Sandbox Code Playgroud)

....等

EDITED

我尝试使用这个:比较范围

DateTime A1 = DateTime.MinValue.AddMinutes(61);
DateTime A2 = DateTime.MinValue.AddHours(1.2);
DateTime B1 = DateTime.MinValue.AddMinutes(5);
DateTime B2 = DateTime.MinValue.AddHours(1);

Console.WriteLine(Range.Overlap(
    new Range<DateTime>(A1, A2),
    new Range<DateTime>(B1, B2)
));
Run Code Online (Sandbox Code Playgroud)

它返回true但我预计会错误.因为此代码始终返回true

 if (left.Start.CompareTo(left.Start) == 0)
 {
     return true;
 }
Run Code Online (Sandbox Code Playgroud)

c# datetime

30
推荐指数
5
解决办法
4万
查看次数

重叠的多个日期范围比较:如何有效地进行?

要检查重叠,在两个不同的dateranges,{Start1, End1}{Start2, End2}我检查:

if ((Start1 <= End2) && (End1 >= Start2))
{
  //overlap exists
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果让我说五个日期范围,有 什么比较重叠的好方法?.

检查它们中的任何一个是否相互重叠?

如果我有多个日期范围,如何查找这些范围是否重叠?

c# algorithm comparison overlap c#-4.0

9
推荐指数
2
解决办法
9161
查看次数

使用LINQ查找重叠的时间段(事件)

我有一个事件列表,现在我想找出哪些事件重叠.您可以在下面找到我目前拥有的代码,但我遇到的问题是,搜索到的项目也包含在列表中.

List<SomeEventObject> overlappingEvents = new List<SomeEventObject>();
foreach (SomeEventObject eventItem in EventList)
{
    bool overlapping = false;
    foreach (SomeEventObject anotherEventItem in EventList)
    {
        if (eventItem.StartDate <= anotherEventItem.EndDate &&
            eventItem.EndDate >= anotherEventItem.StartDate)
        {
            overlapping = true;
            overlappingEvents.Add(anotherEventItem);
        }
    }

    if (overlapping)
        overlappingEvents.Add(eventItem);
}
Run Code Online (Sandbox Code Playgroud)

我需要创建一个没有搜索项目的新列表.因此我问是否有一个很好的LINQ表达式可以为我处理.这是我想到的一些伪代码:

EventList.Where(e => 
                eventItem.StartDate <= e.EndDate && 
                eventItem.EndDate >= e.StartDate);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,eventItem当然不存在.

结果我认为我需要两个列表:一个具有重叠事件,一个具有非重叠事件.但.Except()如果我有重叠的事件列表,这应该是可能的.

编辑:

我创建了一个dotnetfiddle,以便人们可以玩它.一个重要的问题是重叠算法.

活动1:
StartDate:今天,10
:00 EndDate:今天,10:05

事件2:
StartDate:今天,10
:05 EndDate:今天,10:10

如果您向用户提供此信息,则不会重叠.所以我要修改我的算法.

c# linq

8
推荐指数
2
解决办法
3115
查看次数

最快的算法确定范围重叠

我有两组范围,每个范围是一对指示开始和结束的整数.确定两个范围之间是否存在重叠的最快方法是什么?

谢谢.

.net c# algorithm overlap

7
推荐指数
1
解决办法
9230
查看次数

计算重叠日期范围的问题

我试图找出正确的算法来计算一组日期范围时遇到问题.

基本上我有一个无序日期范围列表(列表包含开始和结束时间的数组),我想合并这个列表,因此它不包含重叠时间.

主要是为了巩固两个日期范围:

if start1 <= end2 and start2 <= end1 //Indicates overlap
   if start2 < start1 //put the smallest time in start1
      start1 = start2
   endif
   if end2 > end1 //put the highest time in end1
      end1 = end2
   endif
endif
Run Code Online (Sandbox Code Playgroud)

这加入了两个日期时间.

在迭代所有值时,我遇到了绊脚石,因此结束列表只包含不重叠的值.

我的功能和递归编程有点生疏,欢迎任何帮助.

language-agnostic algorithm recursion functional-programming

7
推荐指数
1
解决办法
2883
查看次数

如何检查循环范围的重叠(重叠年度重复周期)

我试图找到一种优雅的算法来检查两个年度重复周期是否重叠。该期间与年份无关,但可以预期一年始终是闰年。

例如,期间 A =(3 月 1 日至 5 月 1 日)和期间 B =(4 月 1 日至 9 月 1 日)重叠。此外,期间 A =(10 月 1 日至 2 月 1 日)和期间 B =(1 月 1 日至 3 月 1 日)重叠。

然而,我发现这比我预期的要困难得多。复杂性来自跨越年底的时期。

我有一个doesOverlap(A,B)可行的解决方案(请参阅下面的方法),但我发现它很混乱。

# for the rest of the MWE context code, see further
# WORKING, but a bit convulted
def doesOverlap(A, B):  
    '''returns True if yearly period A and B have overlapping dates'''
    # list to track if day in …
Run Code Online (Sandbox Code Playgroud)

python range cycle overlap

4
推荐指数
1
解决办法
659
查看次数

C#Interval树类

我正在寻找一个间隔树C#集合类.

我需要能够添加间隔,理想2D,否则我可以组合两个标准1D间隔树.

我还需要能够找出与给定间隔重叠的间隔.

我发现这个intervaltree.codeplex.com但是

没有与此版本相关的下载.

编辑:

继续这里:C#使用其他代码

c# codeplex interval-tree

2
推荐指数
2
解决办法
6916
查看次数