我当前正在尝试检查日期重叠,其中结束日期可能为空。使用当前的代码,如果发生场景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");
}
答案 0 :(得分:3)
假设EndDate
为空实际上是“无结束日期”,那么任何日期总是早于此。
您可以利用null对象模式,用适当的始终匹配的实例替换null(最简单的方法是使用null-coalescing operator)。
var ed = A.EndDate ?? DateTime.MaxValue;
if (theDate < ed) {
// We're in range
}