2017-12-04 4 views
0

두 달 사이의 모든 달을 얻으려고합니다.두 날짜 사이에 달을 얻는 방법

예를 들어 사용자가 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

...? 현재 날짜에 한 달 추가하고 종료 날짜보다 여전히 낮은 지 확인하십시오. – 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

함수이므로 매우 쉽게 사용할 수 있습니다. 나는 그것을 내 프로젝트에서 사용한다. –

관련 문제