Откиньте голову.
$start = new DateTime('2013-08-14 09:00:00');
$end = new DateTime('2013-08-14 17:00:00');
$interval = new DateInterval('PT30M');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt)
{
// do something
echo $dt->format('H:iA');
}
Ссылки