est-il possible de déterminer à partir de deux intervalles sans rabats (intervalles avec une limite à l'infini) se chevauchent ou non?
J'ai essayé ceci (et d'autres variations similaires): P>
Instant now = new Instant(new Date().getTime()); Interval i2 = new Interval(now, (ReadableInstant) null); Interval i1 = new Interval(now, (ReadableInstant) null); boolean overlapping = i2.overlaps(i1);
3 Réponses :
Si les deux intervalles commencent à Si l'intervalle t = -∞ code> ou si les deux intervalles se terminent à
t = + ∞ code>, ils seront
a code> commence à
t = -∞ code> et intervalle
b code> se termine à
t = + ∞ code>, Ils se chevauchent
a.start> b.start code>. p>
Solution hacky:
Au lieu de maintenant +/- 300 ans, cette date minimale peut être utilisée: nouvelle localDate (-292_275_054, 1, 1); code> (année -292,275 054 BC) et cette date maximale peut être utilisée
Nouveau localDate (292_278_993, 12, 31) Code> (Année 292,278,993 AD). Ces limites sont définies dans
Je recommanderais d'utiliser une plage
Range<DateTime> r1= Range.atLeast(DateTime.now());
Range<DateTime> r2 = Range.atLeast(DateTime.now());
boolean overlap = r1.isConnected(r2) && !r1.intersection(r2).isEmpty();
nitpick> code>
J'ai édité la question avec @matt Comments