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

时间:2016-05-30 09:48:47

标签: php arrays date

我从我的数据库中获取了当前月份,这基本上是用户的加入日期。让我们说本月使用的是加入,也就是五月。我用来获取月份名称的代码是这样的:

$months = array();
array_push($months,date("F",strtotime($me['joinTime'])));

在这种情况下,我将开始月份添加到数组中,在这种情况下是May ...现在我想要做的是随着月份的流逝,我想添加每个月新的月份到阵列..所以例如在六月的几天里,当六月开始的时候,我将把那个月添加到数组中..所以我的问题是,我怎么能得到其余的从开始日期(五月)开始的月份名称。

我需要六月,七月,八月,九月,十月,十一月,十二月......

如果开始月份是4月,我也将May添加到数组中......

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:4)

首先,您需要获得月份编号,而不是需要使用循环到12年末。对于每月编号,您还需要月份名称,因此请使用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 )

答案 1 :(得分:0)

哟也可以像

一样
$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);

答案 2 :(得分:0)

在这里,我们将使用DatePeriod,它允许在给定时间段内按固定间隔重复的一组日期和时间进行迭代。

所以我们得到了结束日期,有了开始日期,然后计算了间隔。然后循环遍历整个月。

// 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 )