Получить список месяцев в определенном году с их датой начала и последней датой

Я хочу получить список месяцев определенного года, когда год представлен в форме. Месяцы должны начинаться с даты начала и последней даты месяца.

$year = $_POST['year'];
$current_year = date('Y');

for ($m=1;$m<=12;$m++)
{$month = date("F", mktime(0,0,0,$m,1,$year));
$nmonth = date("m",strtotime($month));
$days = cal_days_in_month(CAL_GREGORIAN,$nmonth,$year);
$sdate = mktime(0, 0, 0, $nmonth, 1, $year);
$edate = mktime(0, 0, 0, $nmonth, $days, $year);
//$edate = date("Y-m-t", strtotime($sdate));
echo strftime("$month $year").'  -  '.'Start date '.''.strftime(" %Y-%m-%d",     $sdate).'  '.'End date '.''.$edate.'   -   '.strtoupper(substr($month, 0, 3)).date("y",mktime(0,0,0,$nmonth,1,$year)).$days.'<br>';
//echo $month.' '.$days.' '.$sdate.' '.$edate.'<br>';
}

<body>
<form id="period" name="period" method="post" action="create_period.php">

<input type="text" name="year" id="year" />

<label>
<input type="submit" name="button" id="submit" value="Create Period" />
</label>
<input type="hidden" name="id" id="id" />
</form>

</body>

-1

Решение

Ты можешь использовать DatePeriod как это:

$year = 2015;

$period = new DatePeriod(
(new DateTime())->setDate($year, 1, 1), //Start at 2015-01-01
new DateInterval('P1M'), //Step is 1 month
(new DateTime())->setDate($year+1, 1, 1) //End at 2016-01-01
);

foreach($period as $date){
$firstDay = $date->modify('first day of this month')->format("Y/m/d") ;
$lastDay = $date->modify('last day of this month')->format("Y/m/d") ;

echo "$firstDay - $lastDay <br>";
}

Демо-версия: https://3v4l.org/CidUa

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]