Из вашего вопроса (и другие ответы не являются тем, что вы хотите), я делаю вывод, что вы хотите, чтобы все даты имели какие-либо совпадения с диапазоном, который вы ищете.
Трудно включить все случаи в простой логический оператор. Это намного проще, если вы его инвертируете. Другими словами, давайте посмотрим даты, которые не пересекаются, а затем получат другие.
Как бы мы определили диапазон, который не перекрывается. Ну, это может быть одна из двух вещей:
- Это уже закончилось до начала периода поиска. (произошло слишком рано)
- ИЛИ Он запускается только после окончания периода поиска. (произошло слишком поздно)
Это охватывает все случаи, предполагая, что стартовая дата никогда не может быть больше даты окончания (которую вы уже должны проверять!).
Итак, теперь мы инвертируем логику:
- Это закончилось после того, как начался период поиска (= не было слишком рано)
- И он начался до окончания периода поиска (= не произошло слишком поздно)
Если еще не слишком рано, и еще не слишком поздно, тогда это должно быть правильно .
myDate.Start
Дальнейшее объяснение
Я знаю, что это странно, чтобы соответствовать вашему Startdate с концом вашего периода и наоборот. Но это имеет смысл. Если мы рассмотрим допустимые даты начала, возможны два варианта:
- Те, кто начал в период , который вы ищете (
endperiod
<myDate.Start
<startPeriod
) - Те, кто начал до того периода , который вы ищете (
endperiod
<myDate.Start
<startPeriod
)
Если вы посмотрите в круглые скобки, вы увидите неожиданную (но неоспоримую) правду: неважно, myDate.Start
произошло ли это до или после endperiod
; так как может быть правильным.
Однако, в обоих случаях, myDate.Start
будет всегда меньше , чем endperiod
. Именно поэтому мы сопоставляем myDate.Start
с endPeriod
.
Если myDate.End
не меньше startperiod
, то это случилось слишком поздно .
Такая же логика справедлива и для рассмотрения startToCheck
и endToCheck
. Если вы запишете это, вы увидите тот же шаблон.
Примечание. Я только уточнил одно из двух сравнений (поскольку они работают по одному и тому же принципу), но вы должны использовать оба варианта, если хотите получить правильный результат. Они не могут работать отдельно, поскольку обе они являются неполными оценками (но вместе они полны)