/** @var LocalDateInterval[] $datesRanges */
$datesRanges = [
LocalDateInterval::forever(),
LocalDateInterval::parse('2000-01-01/-'),
LocalDateInterval::parse('-/2000-12-31'),
LocalDateInterval::parse('2000-01-01/2000-12-31'),
LocalDateInterval::parse('2000-06-01/-'),
LocalDateInterval::parse('-/2000-06-01'),
LocalDateInterval::parse('2000-06-01/2000-06-01'),
];
foreach ($datesRanges as $a) {
foreach ($datesRanges as $b) {
if ($a->isFinite() && $b->isFinite()) {
continue;
}
try {
$result = $a->containsInterval($b) ? 'yes' : 'no';
} catch (Throwable $e) {
$result = '(error) '.$e->getMessage();
}
echo sprintf('%-21s in %-21s ? %s%s', $b, $a, $result, PHP_EOL);
}
}
Actual result :
script to reproduce the output above