我从我的数据库中获取了当前月份,这基本上是用户的加入日期。让我们说本月使用的是加入,也就是五月。我用来获取月份名称的代码是这样的:
$months = array();
array_push($months,date("F",strtotime($me['joinTime'])));
在这种情况下,我将开始月份添加到数组中,在这种情况下是May ...现在我想要做的是随着月份的流逝,我想添加每个月新的月份到阵列..所以例如在六月的几天里,当六月开始的时候,我将把那个月添加到数组中..所以我的问题是,我怎么能得到其余的从开始日期(五月)开始的月份名称。
我需要六月,七月,八月,九月,十月,十一月,十二月......
如果开始月份是4月,我也将May添加到数组中......
有人可以帮我解决这个问题吗?
答案 0 :(得分:4)
首先,您需要获得月份编号,而不是需要使用循环到12年末。对于每月编号,您还需要月份名称,因此请使用DateTime createFromFormat
。
$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 )