C#时间重合判断,重合有4种情况,有没有列子?

在C#中进行时间重合判断时,常见的情况可以分为以下四种:

  1. 完全包含:一个时间段完全包含另一个时间段。
  2. 部分重合:两个时间段有部分时间重合。
  3. 相邻:两个时间段在时间轴上相邻但没有重叠。
  4. 无重合:两个时间段没有任何重叠部分。

下面是每种情况的示例和详细解释:

1. 完全包含

csharp
DateTime 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. 部分重合

csharp
DateTime 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. 相邻

csharp
DateTime 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. 无重合

csharp
DateTime 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 类型和比较操作符来判断两个时间段的四种重叠情况:完全包含、部分重合、相邻和无重合。根据具体的业务逻辑和时间段的起止时间,可以灵活地应用这些判断条件来处理时间重合的情况。