检查重叠日期

本文关键字:日期 重叠 检查 | 更新日期: 2023-09-27 17:50:23

我有4个日期startDateendDateperiodStartDateperiodEndDate

如果startDateendDate表示的周期与periodStartDateperiodEndDate表示的周期重叠,我需要一个返回true的方法。

这是C#3.5,所以不能使用元组。如建议的链接

我的大脑好像不工作了,有人能帮帮我吗。

谢谢!

检查重叠日期

if (startDate<periodStartDate)//start date is older
{
   if (periodStartDate < endDate) //if end date is later than start of period
       return true;
   else return false; //
}
else //period start is older
{
    if (periodEndDate < startDate) //period ended before startdate
         return false;
    else
         return true;
}

只需注意你想要的"<"answers"<="的位置

编辑(更优雅的解决方案(:

if (end1<start2) || (end2<start1) return false
else return true;

假设结束日期始终等于或晚于开始日期:

return startDate <= periodEndDate;

我认为这应该符合您的要求。

 {
            if (startDate < periodStartDate)
            {
                if (endDate>=periodStartDate)
                {
                    return true;
                }
                else
                {
                    return false;
                }                             
            }
            else
            {
                if (startDate <= periodEndDate)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

这将捕捉重叠,即使一个完整的范围包含另一个。

您只需要检查endDate是在periodStartDate之前还是在periodEndDate之后
(假设startDate<endDate和periodStartDate<periodEndDate(

代码内

if (endDate < periodStartDate || periodEndDate < startDate) return false;  
else return true;  

或在视觉上=(

startDate -------- endDate periodStartDate -------- periodEndDate

periodStartDate -------- periodEndDate startDate -------- endDate