Я использую DateTime()
, и связанные с ним классы делают это намного проще.Просто создайте начальную и конечную дату с интервалом ne дня и используйте цикл, чтобы вывести дни.
$start = new DateTime('2018-12-14');
$end = (new DateTime('2018-12-16'))->modify('+1 day');
$interval = new DateInterval('P1D');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $date) {
echo "{$date->format('d-m-Y - l')}<br>";
}
$start
является объектом DateTime()
и представляетстартовый день.$end
- последний день цикла.Вы должны добавить к нему один день, поскольку циклы DatePeriod
не включают последний день.$interval
- это объект DateInterval()
, представляющий интервал, через который мы хотим пройти.В этом случае срок один день.$period
является объектом DatePeriod()
и представляет всю эту информацию в итерируемом объекте.Оттуда вы просто просматриваете его, и с помощью объекта DateTime()
, который вам предоставляется, вы просто форматируете как обычно.
Результат:
14-12-2018 - Friday
15-12-2018 - Saturday
16-12-2018 - Sunday
Демо
Примечание. В этом решении учитывается переход на летнее время и високосный год.