C#时间重合判断,重合有4种情况,有没有列子?
在C#中进行时间重合判断时,常见的情况可以分为以下四种:
- 完全包含:一个时间段完全包含另一个时间段。
- 部分重合:两个时间段有部分时间重合。
- 相邻:两个时间段在时间轴上相邻但没有重叠。
- 无重合:两个时间段没有任何重叠部分。
下面是每种情况的示例和详细解释:
1. 完全包含
csharpDateTime start1 = new DateTime(2024, 7, 1, 10, 0, 0);
DateTime end1 = new DateTime(2024, 7, 1, 14, 0, 0);
DateTime start2 = new DateTime(2024, 7, 1, 11, 0, 0);
DateTime end2 = new DateTime(2024, 7, 1, 13, 0, 0);
bool fullyContained = start1 <= start2 && end1 >= end2;
在这个例子中,时间段 (start1, end1)
完全包含时间段 (start2, end2)
。
2. 部分重合
csharpDateTime start1 = new DateTime(2024, 7, 1, 10, 0, 0);
DateTime end1 = new DateTime(2024, 7, 1, 14, 0, 0);
DateTime start2 = new DateTime(2024, 7, 1, 13, 0, 0);
DateTime end2 = new DateTime(2024, 7, 1, 15, 0, 0);
bool overlap = start1 < end2 && start2 < end1;
在这个例子中,时间段 (start1, end1)
和 (start2, end2)
在时间轴上部分重合。
3. 相邻
csharpDateTime start1 = new DateTime(2024, 7, 1, 10, 0, 0);
DateTime end1 = new DateTime(2024, 7, 1, 14, 0, 0);
DateTime start2 = new DateTime(2024, 7, 1, 14, 0, 0);
DateTime end2 = new DateTime(2024, 7, 1, 18, 0, 0);
bool adjacent = start1 < end2 && start2 == end1;
在这个例子中,时间段 (start1, end1)
和 (start2, end2)
相邻但没有重叠部分。
4. 无重合
csharpDateTime start1 = new DateTime(2024, 7, 1, 10, 0, 0);
DateTime end1 = new DateTime(2024, 7, 1, 14, 0, 0);
DateTime start2 = new DateTime(2024, 7, 1, 15, 0, 0);
DateTime end2 = new DateTime(2024, 7, 1, 18, 0, 0);
bool noOverlap = start1 >= end2 || start2 >= end1;
在这个例子中,时间段 (start1, end1)
和 (start2, end2)
没有任何重叠部分。
总结
以上示例演示了如何使用C#中的 DateTime
类型和比较操作符来判断两个时间段的四种重叠情况:完全包含、部分重合、相邻和无重合。根据具体的业务逻辑和时间段的起止时间,可以灵活地应用这些判断条件来处理时间重合的情况。