簡體   English   中英

如何獲得兩個日期之間的月份

[英]How to get Months between two dates

我正在嘗試獲取兩個日期之間的所有月份。

例如,如果用戶在2012年10月21日發布了一篇文章,而今天的日期是2017年5月12日。 現在我想獲得這段時間之間的所有月份和年份,如下所示

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";

我怎么能得到所有的幾個月?

使用此代碼

$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";
}
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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM