From 65efe424caa3a68573f2db5fb0f957c652178bfc Mon Sep 17 00:00:00 2001 From: Sylvain Fabre Date: Wed, 15 Feb 2023 20:43:59 +0100 Subject: [PATCH] Between --- src/AbsoluteDate.php | 10 ++++++++++ tests/AbsoluteDateTest.php | 12 ++++++++++++ 2 files changed, 22 insertions(+) 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)); } }