比较两个DateTime.TimeOfDay,如果它们以任何方式交叉。ASP C#

比较两个DateTime.TimeOfDay,如果它们以任何方式交叉。ASP C#,c#,datetime,asp.net-core,C#,Datetime,Asp.net Core,在考虑了大约两个小时之后,我希望你们能在这个问题上帮助我 我想构建一个类似日历的系统,在这个系统中,如果另一个条目在同一个.TimeOfDay中掉落或交叉,则用户无法添加条目 所以我想比较两个日期(DateTime) 更具体地说:日期是一样的,只是不同 例如: (Existing entry) DateTime dateStart: 05/05/2021 17:00 DateTime dateEnd: 05/05/2021 18:00 (User wants to add th

在考虑了大约两个小时之后,我希望你们能在这个问题上帮助我

我想构建一个类似日历的系统,在这个系统中,如果另一个条目在同一个.TimeOfDay中掉落或交叉,则用户无法添加条目

所以我想比较两个日期(DateTime) 更具体地说:日期是一样的,只是不同

例如:

(Existing entry)
DateTime dateStart:    05/05/2021 17:00
DateTime  dateEnd:     05/05/2021 18:00

(User wants to add this:)
DateTime  compareStart:  05/05/2021 16:30
DateTime  compareEnd:    05/05/2021 17:15
我想归档的是比较compareStart+compareEnd是否以任何可能的方式跨越dateStart和dateEnd

旁注:

比较起始时间可以是2021年5月5日17:25,比较起始时间可以是2021年5月5日18:30,以此类推

只有当没有任何条目落下或穿过现有条目时,才可以添加条目。 我希望我已经清楚地描述了我的问题

欢迎任何建议


提前谢谢

可能会出现四种不同的重叠情况(请原谅我的绘画技巧)

这四个国家都有以下共同点:

Existing.StartDate=New.StartDate

简化课程:

public class Event
{
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
}
比较两个事件

bool isOverlapping = e1.StartDate <= e2.EndDate && e1.EndDate >= e2.StartDate;
bool isOverlapping=e1.StartDate=e2.StartDate;
或者,在用于真实世界示例的方法中,例如,在插入之前将现有事件列表与新事件列表进行比较的日历

public boolAddEvent(List<Event> events, Event newEvent)
{
    if (!events.Any(x => x.StartDate <= newEvent.EndDate && x.EndDateDate >= newEvent.StartDate))
    {
        events.Add(newEvent);
        return true
    }
    else
    {
        return false;
    }
}
public boolAddEvent(列出事件、事件newEvent)
{
如果(!events.Any(x=>x.StartDate=newEvent.StartDate))
{
events.Add(newEvent);
返回真值
}
其他的
{
返回false;
}
}

这是否回答了您的问题?非常感谢。工作很有魅力!