今天之后每个月创建一个数组

时间:2016-07-25 15:20:19

标签: php date

我找不到在当前版本之后每个月创建数组的方法。

            <?php 
                $month = 07; 
                $year = 2016;
                $end = date('Y');
                for($i=0;$i<=$end-$year;$i++){
                    $from = 1;
                    if($i==0)
                        $from = $month;


                    for($y=$from;$y<=12;$y++){
                        if($year==date('Y') && $y > date('m'))
                            break;

                        $a = $year+$i.'-'.$y;
                        $months[$a] = $a;
                    }
                }
                krsort($months);
            ?>
            <?php echo Html::dropDownList('month_year',$month_year,$months,array('class'=>'form-control'));?>

我想要一个看起来像这样的下拉列表

2016-09

2016-08

2016-07

每个月来。开课日期应为2016-07。最高值应该是当月。

1 个答案:

答案 0 :(得分:4)

只需创建一个开始和结束日期并循环播放它们:

$start    = (new DateTime('next month'))->modify('first day of this month');
$end      = (new DateTime('+24 months'))->modify('first day of next month');
$interval = DateInterval::createFromDateString('1 month');
$period   = new DatePeriod($start, $interval, $end);

foreach ($period as $dt) {
    echo $dt->format("Y-m") . "<br>\n";
}

我将DateTime()DateInterval()DatePeriod()一起使用,因为这是最干净的方法,可以本地处理DST和闰年。

Demo