public static function makeDatesListByRange(DateRange $range, IntervalUnit $unit, $hash = true) { $date = $unit->truncate($range->getStart()); if ('Date' == get_class($range->getStart())) { $date = Date::create($date->toStamp()); } $dates = array(); do { if ($hash) { $dates[$date->toString()] = $date; } else { $dates[] = $date; } $date = $date->spawn('+ 1' . $unit->getName()); } while ($range->getEnd()->toStamp() >= $date->toStamp()); return $dates; }
public function testCountMonthsNotOverlapped() { $unit = IntervalUnit::create('month'); $this->assertEquals(4, $result = $unit->countInRange(TimestampRange::create($start = Timestamp::create('2008-12-31 23:59:58'), $end = Timestamp::create('2009-05-28 03:00:00')), false)); $this->assertLessThanOrEqual($end->toStamp(), $start->spawn($result . ' ' . $unit->getName())->toStamp()); }