比较两个DateTime.TimeOfDay,如果它们以任何方式交叉。ASP C#
在考虑了大约两个小时之后,我希望你们能在这个问题上帮助我 我想构建一个类似日历的系统,在这个系统中,如果另一个条目在同一个.TimeOfDay中掉落或交叉,则用户无法添加条目 所以我想比较两个日期(DateTime) 更具体地说:日期是一样的,只是不同 例如:比较两个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
(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;
}
}
这是否回答了您的问题?非常感谢。工作很有魅力!