public function testHowToKnowIfADateIntervalIsBeforeAfterDuringOtherDateInterval()
 {
     $interval = new DateInterval(new Date(2013, 6, 1), new Date(2013, 6, 15));
     $before = new DateInterval(new Date(2013, 5, 20), new Date(2013, 5, 30));
     $after = new DateInterval(new Date(2013, 6, 16), new Date(2013, 6, 20));
     $during = new DateInterval(new Date(2013, 5, 1), new Date(2013, 6, 30));
     $partiallyDuring = new DateInterval(new Date(2013, 1, 1), new Date(2013, 6, 10));
     $this->assertTrue($interval->isBefore($after));
     $this->assertTrue($interval->isAfter($before));
     $this->assertTrue($interval->isDuring($during));
     $this->assertFalse($interval->isDuring($partiallyDuring));
 }
 public function testNextEquals()
 {
     $startDate = new Date(2012, 01, 01);
     $endDate = new Date(2012, 01, 03);
     $interval = new DateInterval($startDate, $endDate);
     $this->assertEquals($startDate, $interval->getBegin());
     $this->assertEquals(new Date(2012, 01, 02), $interval->getBegin()->next());
     $this->assertEquals(new Date(2012, 01, 03), $interval->getBegin()->next()->next());
     $this->assertFalse($endDate->isEquals($interval->getBegin()));
     $this->assertFalse($endDate->isEquals($interval->getBegin()->next()));
     $this->assertTrue($endDate->isEquals($interval->getBegin()->next()->next()));
 }
 public static function fromDateInterval(DateInterval $dateInterval)
 {
     $begin = $dateInterval->getBegin();
     $end = $dateInterval->getEnd();
     return new TimeInterval(new TimePoint($begin->getYear(), $begin->getMonth(), $begin->getDay(), 0, 0), new TimePoint($end->getYear(), $end->getMonth(), $end->getDay(), 23, 59, 59));
 }