Для кода ниже я хочу иметь текущий месяц и следующие 12 месяцев с годом. Я использую петлю для этого, все работает нормально, за исключением «января». И я просто не знаю, что происходит не так.
for ($i = 0; $i <= 12; $i++) {
$months[ucfirst(strftime("%B %G", strtotime( date( 'Y-m' )." +$i months")))] = ucfirst(strftime("%B %G", strtotime( date( 'Y-m' )." +$i months")));
echo ucfirst(strftime("%B %G", strtotime( date( 'Y-m' )." +$i months")));
}
Эхо-выход:
December 2015 Januari 2015 Februari 2016 Maart 2016 April 2016 Mei 2016 Juni 2016 Juli 2016 Augustus 2016 September 2016 Oktober 2016 November 2016 December 2016
Вы можете просто использовать:
$date = new DateTime('first day of this month');
for ($i = 0; $i < 13; $i++) {
echo $date->format('F Y,');
$date->modify('+1 month');
}
Выход будет:
Декабрь 2015, январь 2016, февраль 2016, март 2016, апрель 2016, май 2016, июнь 2016, июль 2016, август 2016, сентябрь 2016, октябрь 2016, ноябрь 2016, декабрь 2016,
Как насчет этого?
<?php
$start = new DateTimeImmutable('first day of this month');
$interval = new DateInterval('P1M');
$period = new DatePeriod($start, $interval, 12);
foreach ($period as $date) {
echo $date->format('F Y') . PHP_EOL;
}