2016-07-31 1 views
-1

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

$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> 

ответ

2

Вы можете использовать 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

+0

Thanx @ Ismail-rbouh. вы гений – user3315848

+0

Я ценю помощь. У меня есть еще одна проблема в [link] (http://stackoverflow.com/questions/38684317/values-fail-to-insert-when-into-table-fields-when-posted) – user3315848

Смежные вопросы