c# - 如果它们以任何方式交叉,则比较两个 DateTime .TimeOfDay。ASP C#
问题描述
在考虑了大约两个小时之后,我希望你们能帮助我解决这个问题。
我要构建的是一个类似日历的系统,如果另一个条目落在或穿过同一个.TimeOfDay,用户将无法添加条目。
所以我想比较两个日期(DateTime)更具体地说:日期相同只是不同.TimeofDay
例子:
(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 。
边注:
compareStart 可能是 05/05/2021 17:25, compareEnd 可能是 05/05/2021 18:30 等。
只有在没有任何下降或跨越现有条目的情况下才能添加条目。我希望我已经清楚地描述了我的问题。
欢迎任何建议
提前致谢!
解决方案
可能会发生四种不同的重叠情况(请原谅我的绘画技巧)
他们四个都有以下共同点:
Existing.StartDate <= New.EndDateDate
和Existing.EndDate >= 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;
或在现实世界示例的方法中,例如在插入之前将现有事件列表与新事件进行比较的日历
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;
}
}
推荐阅读
- javascript - 在对象 JavaScript 中获取一个键
- python - 使用 Django 将静态内容加载到 Web App 时出现问题
- python - 使用 Numpy einsum 有效收缩 Levi-Civita 张量
- python-3.x - 如何将包含多个元组数组的多维数组转换为python中的列表?
- ios - 将 MacOS 更新到 10.15.4 是否会影响配置文件签名
- go - Golang 调用具有不同参数的方法
- sqlite - 房间查询不适用于列表
使用类型转换器 - python - 如何在 Python 中移位以操作文件系统八进制
- kubernetes - Google Kubernetes Engine 上的 Apache Ignite Web 控制台?
- php - 使用随机唯一名称更新图像并使用数据库上传路径不起作用