/** * DateDiffCalculator that calculates diff to the past in one of the units: * - seconds * - minutes * - "yesterday" * - hours * - days * - weeks (up to 14 days) * - full date * * @return DateDiffCalculator */ public static function upTo2Weeks() { return self::getOrCreate('up-to-2-weeks', function () { return new DateDiffCalculator([RangeRule::createForNegativeValues(2 * DateUnits::WEEK, INF, function (DateDiffRequest $request) { return DateDiffResult::createFullDate($request); }), Rules::weeksAgo(), Rules::yesterday(), Rules::daysAgo(), Rules::hoursAgo(), Rules::minutesAgo(), Rules::secondsAgo()]); }); }
public function testRangeChecking() { $condition = new RangeRule(-100, 100, function (DateDiffRequest $request) { return DateDiffResult::createFullDate($request); }); $this->assertTrue($condition->isApplicable($this->createRequestForSeconds(5))); $this->assertTrue($condition->isApplicable($this->createRequestForSeconds(100))); $this->assertTrue($condition->isApplicable($this->createRequestForSeconds(-100))); $this->assertFalse($condition->isApplicable($this->createRequestForSeconds(-101))); $this->assertFalse($condition->isApplicable($this->createRequestForSeconds(101))); $this->assertFalse($condition->isApplicable($this->createRequestForSeconds(1000))); }
protected function createFullDateResult(\DateTimeImmutable $currentDate) { return DateDiffResult::createFullDate(new DateDiffRequest($currentDate, $currentDate->modify('tomorrow'))); }