我找不到在当前版本之后每个月创建数组的方法。
<?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。最高值应该是当月。
答案 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和闰年。