Можно ли сделать список месяцев со смещением на следующий год?
Есть массив с месяцами:
$monthes = array(
1 => 'Январь', 2 => 'Февраль', 3 => 'Март', 4 => 'Апрель',
5 => 'Май', 6 => 'Июнь', 7 => 'Июль', 8 => 'Август',
9 => 'Сентябрь', 10 => 'Октябрь', 11 => 'Ноябрь', 12 => 'Декабрь'
);
Пример списка в январе 2018:
Январь 2017
...
Декабрь 2017
Пример списка в феврале 2018:
Февраль 2017
...
Декабрь 2017
Январь 2018
В базе есть колонка с месяцем - month и с годом - year. Есть какая-то функция для получения списка месяцев:
function getMonthes() {
global $monthes;
foreach ($monthes as $id => $data) {
$data .= date(' Y');
if($id < date('n')) {
$ret .= "<option value='{$id}'>{$data}</option>";
}
}
return $ret;
$currentMonth = 4;
$currentYear = 2018;
for($i = 0 ; $i < 12; $i++){
$m = ($i + $currentMonth) % 12 + 1;
$y = (int) ($currentYear - 1 + ($i + $currentMonth) / 12);
echo 'year: '.$y.' month: '.$monthes[$m];
}
sandbox
$months = array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',
'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
);
$dateStr = date("Y-m-d"); // today
$begin = new DateTime($dateStr);
$end = (new DateTime($dateStr))->modify('+12 month');
$periods = new DatePeriod($begin, new DateInterval('P1M'), $end);
// вывод
echo '<select>';
foreach($periods as $period){
$num = $period->format("n");
echo "<option value='{$period->format('Y')}'>{$months[$num - 1]}</option>";
}
echo '</select>';
http://phpfiddle.org/main/code/5kb3-h2rv
DatePeriod - Представляет временной период. Позволяет перемещаться в заданном временном интервале на равные промежутки времени. В данном случае это интервал от сегодня на год вперед (не включая последний месяц) с интервалом в месяц.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости