2016-07-31 4 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

ありがとう@のイスマイル・rbouh。あなたは天才です – user3315848

+0

私は助けに感謝します。私は別の問題が[リンク](http://stackoverflow.com/questions/38684317/values-fail-to-insert-when-into-table-fields-when-posted) – user3315848

関連する問題