2016-05-30 09:48

从PHP当月获取月份名称 - 到年底


I have fetched a current month from my DB which is basically a join date of the user. Lets say the use joined this month and it is May. The code I do to fetch the month name is like this:

$months = array();

In this case I add the start month to the array, which in this case is May... Now what I'd like to do is as the months go by, I'd like to add each new month to the array.. So for instance in a few days its June, and when June kicks in, I'll add that Month as well to the array.. So my question here is, how can I get the rest of the month names from the start date (May).

I need June, July, August, September, October, November, December...

If the start month was April I'd add May into the array as well...

Can someone help me out with this ?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答


  • drsl90685154 drsl90685154 5年前

    First you need to get he month number and than you need to use a loop through to end of the year that is 12. For each month number you also need the month name so use DateTime createFromFormat.

    Online Check

    $months = array();
    $num = date("n",strtotime($me['joinTime']));
    array_push($months, date("F", strtotime('2016-05-17 16:41:51')));
    for($i = ($num + 1); $i <= 12; $i++){
        $dateObj = DateTime::createFromFormat('!m', $i);
        array_push($months, $dateObj->format('F'));
    print_r($months); // Array ( [0] => May [1] => June [2] => July [3] => August [4] => September [5] => October [6] => November [7] => December )
    点赞 评论 复制链接分享
  • duanmeng3126 duanmeng3126 2年前

    Here we will be using DatePeriod which allows iteration over a set of dates and times, recurring at regular intervals, over a given period.

    So we got the end date and we have the start date and then calculated the interval. And then looping over the period we got the array of months.

    // current date : 20 Feb 2019
    $startDate = new \DateTime('first day of next month');
    $endDate = new \DateTime('1st january next year');
    $interval = new \DateInterval('P1M');
    $period = new \DatePeriod($startDate, $interval, $endDate);
    // Start array with current date
    $dates = [];
    // Add all remaining dates to array
    foreach ($period as $date) {
         array_push($dates, $date->Format('F'));
    // output
    print_r($dates); die;
    Array ( [0] => March [1] => April [2] => May [3] => June [4] => July [5] => August [6] => September [7] => October [8] => November [9] => December )
    点赞 评论 复制链接分享
  • douzhigan1687 douzhigan1687 5年前

    Yo can also put it like

    $array = array();
    array_push($array, date('F')) ;
    for ($i=1; $i<=  12 - date('m'); $i++ ){
        array_push($array, date('F', strtotime("+$i months"))) ;
    print "<pre>";print_r($array);
    点赞 评论 复制链接分享