/** * @dataProvider longerThanOrEqualsProvider * * @param Duration $duration1 * @param Duration $duration2 * @param boolean $expected */ public function testLongerThanOrEquals(Duration $duration1, Duration $duration2, $expected) { $this->assertSame($expected, $duration1->longerThanOrEquals($duration2)); }
/** * Subtract a duration to this one. If $duration is greather than or equal to * the current duration, a duration of 0 seconds is returned. * * For instance P2S - P1S = P1S */ public function sub(Duration $duration) { if ($duration->longerThanOrEquals($this) === true) { $this->setInterval(new DateInterval('PT0S')); } else { $refStrDate = '@0'; $tz = new DateTimeZone(self::TIMEZONE); $d1 = new DateTime($refStrDate, $tz); $d2 = new DateTime($refStrDate, $tz); $d1->add(new DateInterval($this->__toString())); $d2->add(new DateInterval($duration->__toString())); $interval = $d1->diff($d2); $this->setInterval($interval); } }