2017-12-04 19 views
0

2ヶ月間のすべての月を取得しようとしています。2ヶ月間の月の取得方法

たとえば、ユーザーが21-10-2012に記事を投稿し、今日の日付が5-12-2017の場合、今私はすべての月と年をこの期間に以下のように表示したい

10-2012 
11-2012 
01-2013 
02-2014 
03-2015 
04-2015 
05-2015 
06-2015 
07-2015 // and so on 
....... 
....... 
....... 
12-2017 // Till Today Date 

まで私は差を計算することしかできませんでした。

$article_date= date("d-m-Y", $article['date']); 
$year = date("Y"); 
$month = date("m"); 
$day = date("d"); 
$date1 = new DateTime($article_date); 
$date2 = new DateTime("$day-$month-$year"); 

$diff = $date1->diff($date2); 

echo (($diff->format('%y') * 12) + $diff->format('%m')) . " full months difference"; 

どのようにすべての月を得ることができますか?

+0

...?現在の日付に1ヶ月追加し、終了日よりまだ低いかどうかを確認します。 – CBroe

答えて

2

使用このコード

$start = new DateTime('2012-10-21'); 
$start->modify('first day of this month'); 
$end  = new DateTime('2017-12-05'); 
$end->modify('first day of next month'); 
$interval = DateInterval::createFromDateString('1 month'); 
$period = new DatePeriod($start, $interval, $end); 

foreach ($period as $dt) { 
    echo $dt->format("m-Y") . "<br>\n"; 
} 
0
function list_months($date_from,$date_to, $return_format){ 
     $arr_months = array(); 
     $a = new \DateTime($date_from); 
     $x = new \DateTime($date_to); 

     $start = $a->modify('first day of this month'); 
     $end = $x->modify('first day of next month'); 

     $interval = \DateInterval::createFromDateString('1 month'); 
     $period = new \DatePeriod($start, $interval, $end); 

     foreach ($period as $dt) { 
      $arr_months[] = $dt->format($return_format); 
     } 

     return $arr_months ; 
    } 

例:簡単なループを介して$new_list = list_months('11-10-2012','11-10-2017', 'm-Y');

+0

これは関数なので、非常に簡単に使用できます。私は自分のプロジェクトで使っています。 –

関連する問題