检查重叠日期

时间:2011-04-18 15:32:19

标签: c# datetime

我有4个日期startDateendDateperiodStartDateperiodEndDate

如果startDateendDate表示的句点与periodStartDateperiodEndDate表示的句点重叠,我需要一种方法返回true。

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

我的大脑似乎没有工作,所以有人可以帮助我。

谢谢!

4 个答案:

答案 0 :(得分:3)

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;
}

只需关注你想要的地方“&lt;”,以及“&lt; =”

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

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

答案 1 :(得分:1)

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

return startDate <= periodEndDate;

答案 2 :(得分:1)

您只需要检查endDate是否在periodStartDate之前,或者startDate是否在periodEndDate之后。
(假设startDate&lt; endDate和periodStartDate&lt; periodEndDate)

代码

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

或在visual =)

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

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

答案 3 :(得分:1)

我认为这应该做你想要的。

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

即使一个范围完整包含另一个范围,也会捕获重叠。