C# 判断2个时间段是否相交
时间: 2023-07-31 21:05:20 浏览: 86
可以使用以下代码判断两个时间段是否相交:
```csharp
DateTime start1 = new DateTime(2021, 1, 1, 10, 0, 0);
DateTime end1 = new DateTime(2021, 1, 1, 12, 0, 0);
DateTime start2 = new DateTime(2021, 1, 1, 11, 0, 0);
DateTime end2 = new DateTime(2021, 1, 1, 13, 0, 0);
if (start1 <= end2 && end1 >= start2)
{
Console.WriteLine("时间段相交");
}
else
{
Console.WriteLine("时间段不相交");
}
```
其中,判断两个时间段相交的条件是:第一个时间段的开始时间小于等于第二个时间段的结束时间,且第一个时间段的结束时间大于等于第二个时间段的开始时间。
相关问题
C# 判断2个时间段是否相交简洁一点
可以使用以下代码来判断两个时间段是否相交:
```
bool isOverlap = (startTime1 < endTime2) && (endTime1 > startTime2);
```
其中,`startTime1` 和 `endTime1` 表示第一个时间段的起始时间和结束时间,`startTime2` 和 `endTime2` 表示第二个时间段的起始时间和结束时间。如果 `isOverlap` 的值为 `true`,则表示两个时间段相交;如果 `isOverlap` 的值为 `false`,则表示两个时间段不相交。
C# 判断延长线段是否相交
判断延长线段是否相交可以分为以下几步:
1. 判断两条线段是否有交点,如果没有交点,则它们的延长线段也不会相交。
2. 如果两条线段有交点,则需要判断这个交点是否在两条线段的延长线段上。
3. 判断交点是否在两条延长线段上可以通过比较交点的坐标是否在两个线段的端点坐标之间来实现。
以下是一个 C# 实现的示例代码:
```
public static bool IsExtendedLineSegmentsIntersect(Vector2 p1, Vector2 p2, Vector2 q1, Vector2 q2)
{
Vector2 r = p2 - p1;
Vector2 s = q2 - q1;
float crossProduct = r.Cross(s);
if (crossProduct == 0) // 平行或共线
{
return false;
}
Vector2 qMinusP = q1 - p1;
float t = qMinusP.Cross(s) / crossProduct;
float u = qMinusP.Cross(r) / crossProduct;
if (t >= 0 && t <= 1 && u >= 0 && u <= 1)
{
return true;
}
return false;
}
```
其中,`Vector2` 表示二维向量,`Cross` 方法用于计算向量的叉积。该方法返回一个布尔值,表示两条延长线段是否相交。