【问题标题】:Get month names from current month - to the end of the year in PHP从当前月份获取月份名称 - 到 PHP 中的年末
【发布时间】:2016-09-28 02:25:10
【问题描述】:

我从我的数据库中获取了当前月份,这基本上是用户的加入日期。假设这个月加入了使用,现在是五月。我获取月份名称的代码是这样的:

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

在这种情况下,我将开始月份添加到数组中,在这种情况下是 May...现在我想做的是随着月份的流逝,我想将每个新月份添加到数组..因此,例如在几天后是六月,当六月开始时,我也会将该月添加到数组中。所以我的问题是,我怎样才能从开始日期(5 月)。

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

如果开始月份是四月,我也会将五月添加到数组中...

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

【问题讨论】:

  • 你需要用年份来修正最后一个月。
  • 是的,但是我该怎么做.. 你能回复一个答案,以便我可以接受吗?
  • 你的答案已经准备好了。
  • 你还没有接受这个,虽然它对你有用:stackoverflow.com/a/37521867/2815635
  • 是的,您需要在获得帮助后接受答复,否则我们将长时间无法为您服务。

标签: php arrays date


【解决方案1】:

首先,您需要获取月份编号,然后您需要使用循环到年底,即 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 )

【讨论】:

  • 嘿,谢谢它有效,只是对代码进行了一点修复: date_create_from_format('!m',$i); DateTime::createFromFormat 出于某种原因向我抛出了一个错误......我在评论中写的方式很好! :)
  • 试试这个\DateTime::createFromFormat('!m', $i);,使用前面的` before the DateTime`。
【解决方案2】:

你也可以这样说

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

【讨论】:

    【解决方案3】:

    在这里,我们将使用 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 )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 2011-03-12
      相关资源
      最近更新 更多