steveosoule
6/9/2015 - 6:34 PM

PHP - Date Interval Maker

PHP - Date Interval Maker

<?php
date_default_timezone_set('UTC');
/**
 * IntervalMaker
 */
class IntervalMaker {
    public function createDates($startDateStamp, $finishDateStamp, DateInterval $desiredInterval, $format = false) {
        $startDate = new DateTime("@$startDateStamp");
        $finishDate = new DateTime("@$finishDateStamp");
        $times = array();

        do {
            $lastTime = end($times);
            if ( $lastTime ){
                $lastDate = ($format) ? new DateTime($lastTime[1]) : new DateTime("@".$lastTime[1]);
            } else {
                $lastDate = $startDate;
            }
            $nextDate = new DateTime("@".$lastDate->getTimestamp());
            $nextDate->add($desiredInterval);

            $times[] = ($format) ? array($lastDate->format($format), $nextDate->format($format)) : array( $lastDate->getTimestamp(), $nextDate->getTimestamp() );

        } while ($nextDate < $finishDate);

        return $times;
    }
}

$timeMaker = new IntervalMaker();

// Formatted
$dates = $timeMaker->createDates(1388534400, 1433788898, new DateInterval('P1M'), 'm/d/Y');
var_dump($dates);

// Timestamped
$dates = $timeMaker->createDates(1388534400, 1433788898, new DateInterval('P1M'));
var_dump($dates);