Проверьте на даты притирки - PullRequest
1 голос
/ 18 апреля 2011

У меня есть 4 даты startDate, endDate, periodStartDate, periodEndDate

И мне нужен метод для возврата true, если период, обозначенный startDate и endDate перекрывают период, обозначенный periodStartDate и periodEndDate.

Это C # 3.5, поэтому нельзя использовать кортежи.как предложенная ссылка

Кажется, мой мозг не работает, так что, может, кто-нибудь, пожалуйста, помогите мне.

Спасибо!

Ответы [ 4 ]

3 голосов
/ 18 апреля 2011
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;
}

просто позаботьтесь о том, где вы хотите "<" и где "<=" </p>

редактировать (более элегантное решение):

if (end1<start2) || (end2<start1) return false
else return true;
1 голос
/ 18 апреля 2011

Я думаю, что это должно делать то, что вы хотите.

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

Это поймает перекрытие, даже если один полный диапазон охватывает другой.

1 голос
/ 18 апреля 2011

Вам нужно только проверить, находится ли endDate перед periodStartDate или startDate после periodEndDate.
(при условии startDate

В коде

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

или визуально =)

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

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

1 голос
/ 18 апреля 2011

Предполагая, что даты окончания всегда будут равны или позже, чем даты начала:

return startDate <= periodEndDate;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...