如何获得两个日期之间的月份

时间:2017-12-04 18:59:42

标签: php datetime time

我正试图在两个日期之间获得所有月份。

例如,如果用户在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";

我怎样才能获得所有月份?

2 个答案:

答案 0 :(得分: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";
}

答案 1 :(得分: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');

相关问题