检查结束日期可能为空的日期重叠

时间:2018-08-01 09:19:41

标签: c# datetime overlap

我当前正在尝试检查日期重叠,其中结束日期可能为空。使用当前的代码,如果发生场景1,我将能够显示冲突消息。但是,我无法显示方案2的冲突消息。例如,

方案1 :结束日期不能为空

1/7/2018至1/9/2018

1/6/2018至1/9/2018

结果:存在冲突

方案2 :结束日期为空

1/7/2018为空

1/6/2018至1/9/2018

结果:存在冲突

这是我的代码:

if ((A.StartDate < B.EndDate) && 
    (B.StartDate < A.EndDate)) {
   Console.WriteLine("Conflict");
}

1 个答案:

答案 0 :(得分:3)

假设EndDate为空实际上是“无结束日期”,那么任何日期总是早于此。

您可以利用null对象模式,用适当的始终匹配的实例替换null(最简单的方法是使用null-coalescing operator)。

var ed = A.EndDate ?? DateTime.MaxValue;

if (theDate < ed) {
  // We're in range
}