【发布时间】:2018-04-06 11:43:32
【问题描述】:
我想在两个日期之间的数组中依次获取所有月份和年份。我想要这种格式的输出:Y-m
我做到了。但是,我只想知道是否有任何简单的方法可以获得相同的结果。
这是我的代码:
public function __construct()
{
$this->params['start-date'] = date('Y-m-d', strtotime("01-01-2016"));
$this->params['end-date'] = date('Y-m-d', time());
}
/**
* @return array
*/
private function _getAllMonths()
{
$start = date_parse($this->params["start-date"]);
$end = date_parse($this->params["end-date"]);
$output[] = ['month' => $start["year"]."-0".$start["month"]];
//loop years
for($i=(int)$start["year"];$i<=(int)$end["year"];$i++)
{
//control months and start year
$k = $i == $start["year"] ? (int)$start["month"] + 1 : 1;
//loop months
for($j=$k;$j<13;$j++)
{
if($i==$end["year"] && $j==$end["month"])
break;
$output[] = ["month" => $i."-".str_pad($j, 2, "0", STR_PAD_LEFT)];
}
}
return $output;
}
请解释一下如何?
【问题讨论】:
-
你的问题的答案是肯定的
-
使用 DateTime 对象或时间戳而不是字符串将是一个很大的改进。
-
@RiggsFolly,以及如何?