diff --git a/src/AbsoluteDate.php b/src/AbsoluteDate.php index 3ef6e1e..8aa6ed5 100644 --- a/src/AbsoluteDate.php +++ b/src/AbsoluteDate.php @@ -153,6 +153,16 @@ public function isAfterOrEqualTo(self $other): bool return $this->__toString() >= $other->__toString(); } + public function isBetween(self $other1, self $other2): bool + { + return $other1->__toString() < $this->__toString() && $this->__toString() < $other2->__toString(); + } + + public function isBetweenOrEqualTo(self $other1, self $other2): bool + { + return $other1->__toString() <= $this->__toString() && $this->__toString() <= $other2->__toString(); + } + /** * Returns date formatted according to the default date format (Y-m-d) */ diff --git a/tests/AbsoluteDateTest.php b/tests/AbsoluteDateTest.php index d1e539f..f99e727 100755 --- a/tests/AbsoluteDateTest.php +++ b/tests/AbsoluteDateTest.php @@ -201,5 +201,17 @@ public function testComparison(): void self::assertTrue($dateAfter->isAfterOrEqualTo($dateBefore)); self::assertTrue($dateAfter->isAfterOrEqualTo($dateAfter)); self::assertFalse($dateBefore->isAfterOrEqualTo($dateAfter)); + + self::assertTrue((new AbsoluteDate('2023-06-01'))->isBetween($dateBefore, $dateAfter)); + self::assertFalse((new AbsoluteDate('2020-01-01'))->isBetween($dateBefore, $dateAfter)); + self::assertFalse((new AbsoluteDate('2025-01-01'))->isBetween($dateBefore, $dateAfter)); + self::assertFalse($dateBefore->isBetween($dateBefore, $dateAfter)); + self::assertFalse($dateAfter->isBetween($dateBefore, $dateAfter)); + + self::assertTrue((new AbsoluteDate('2023-06-01'))->isBetweenOrEqualTo($dateBefore, $dateAfter)); + self::assertFalse((new AbsoluteDate('2020-01-01'))->isBetweenOrEqualTo($dateBefore, $dateAfter)); + self::assertFalse((new AbsoluteDate('2025-01-01'))->isBetweenOrEqualTo($dateBefore, $dateAfter)); + self::assertTrue($dateBefore->isBetweenOrEqualTo($dateBefore, $dateAfter)); + self::assertTrue($dateAfter->isBetweenOrEqualTo($dateBefore, $dateAfter)); } }