如何检查日期时间段的交集[重复]

2024-04-16

我有四个 DateTime 对象。 A1、A2 和 B1、B2。

我需要知道 A1-A2 期间与 B1-B2 期间不相交。但我不想写脏代码,就像许多 if 块一样。

if (A1 < B1 && A2 > B1)
{
    return false;
}

.... ETC。

EDITED

我尝试使用这个:比较范围 http://blogs.msdn.com/b/jaybaz_ms/archive/2004/08/19/217226.aspx

DateTime A1 = DateTime.MinValue.AddMinutes(61);
DateTime A2 = DateTime.MinValue.AddHours(1.2);
DateTime B1 = DateTime.MinValue.AddMinutes(5);
DateTime B2 = DateTime.MinValue.AddHours(1);

Console.WriteLine(Range.Overlap(
    new Range<DateTime>(A1, A2),
    new Range<DateTime>(B1, B2)
));

它回来了true但我预计false。 因为这段代码总是返回 true

 if (left.Start.CompareTo(left.Start) == 0)
 {
     return true;
 }

如果在您的程序中,范围 A1-A2 和 B1-B2 是“正确的”,因为已知 A1

那么你的非交叉测试就是简单的

if(A1>B2 || B1>A2)

注意我已经掩盖了这是 > 还是 >=。运算符的正确选择取决于您如何定义范围以包含或排除其端点;即它们是否代表闭区间、开区间或半开区间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查日期时间段的交集[重复] 的相关文章

随机推荐