Set the begins date, interval get get exactly start date in range.
For example: begining date is 2019-03-01; start displaying date is 2019-03-02; interval and range is every 3 days; the exactly start displaying date should be 2019-03-04.
$date_begins = '2018-08-01';
$date_end = '2018-12-31';
$interval_num = 10;
$interval_unit = 'D';
$DateInterval = new \Rundiz\DateInterval\DateInterval();
$DateInterval->date_begins = $date_begins;
$DateInterval->date_end = $date_end;
$DateInterval->setInterval($interval_num, $interval_unit);
$list_dates = $DateInterval->getTheDates();
if ($list_dates == false || !is_array($list_dates)) {
echo "\t".'<h3>Error!</h3>'."\n";
// Displaying the error messages from class.
foreach ($DateInterval->getErrorMessage() as $err_msg) {
echo "\t\t".$err_msg.'<br>'."\n";
}
// Or!! if you want to use your custom error message, translation please use the code below instead.
/*foreach ($DateInterval->getErrorCodes() as $err_code) {
// for more, please read the docblock at `getErrorCodes()` method.
switch ($err_code) {
case 'RDDINTV_NO_DATE_BEGINS':
echo 'There is no begins date or invalid format.<br>'."\n";
break;
case 'RDDINTV_INCORRECT_DATE_BEGINS':
echo 'The begins date value is incorrect.<br>'."\n";
break;
case 'RDDINTV_NO_INTERVAL_RANGE':
echo 'Please enter interval or range in <code>setInterval()</code> method.<br>'."\n";
break;
default:
echo 'Unknow error!<br>'."\n";
break;
}
}*/
} else {
foreach ($list_dates as $each_date) {
echo "\t".$each_date.'<br>'."\n";
}
}
From the code above, the result will be:
2018-08-01
2018-08-11
2018-08-21
2018-08-31
2018-09-10
2018-09-20
2018-09-30
2018-10-10
2018-10-20
2018-10-30
2018-11-09
2018-11-19
2018-11-29
2018-12-09
2018-12-19
2018-12-29
And if you add more specific to start and stop date.
$DateInterval->getTheDates('2018-10-05', '2018-11-30');
From the code above, the result will be:
2018-10-10
2018-10-20
2018-10-30
2018-11-09
2018-11-19
2018-11-29
For more example, please look in tests folder.