(StartA == NULL || StartA <= EndB) &&
(EndA == NULL || EndA >= StartB) &&
(StartB == NULL || StartB <= EndA) &&
(EndB == NULL || EndB >= StartA)
假设:
开始时间为StartA到结束时间为EndA,开始时间为StartB到结束时间为EndB。
编辑:抱歉我匆忙地组织了上述逻辑,当任一范围的开始和结束日期为空时,似乎会失败。请参见David下面的解决方案,以获得更好的并且解释清楚的方法。