我使用DatePeriod按月间隔获取两个日期之间的所有月份。 但结果对象是按时间顺序排列的。但是,我需要按时间顺序进行进一步处理。
当前我使用foreach循环来横向移动对象作为推入数组。 然后将arrary_reserve($ var)更改为反向时间顺序。
有没有更好的方法来实现这一目标?
这是我的代码片段
<?php
$out = "
<h3>Archive</h3>
";
$start = new DateTime('2010-01-01');
$end = new DateTime('2015-02-01');
$interval = DateInterval::createFromDateString('1 month');
$period = new DatePeriod($start, $interval, $end);
$a = array();
foreach ($period as $dt) {
array_push($a, $dt);
}
$a = array_reverse($a);
foreach ($a as $dt) {
$d = $dt->format("Y-m-d");
$nextmonth = date('Y-m-d', strtotime('+1 month', strtotime($d)));
$count = count($pages->find("template=post, post_date>=$d, post_date<$nextmonth"));
if ($count > 0) {
$out .= "<a href='{$pages->get('template=home')->url}" . date('Y', strtotime($d)) . "/" . date('m', strtotime($d)) . "'>" . date('M Y', strtotime($d)) . " (" . $count . ")" . "</a><br/>";
}
}
echo $out;
你可以忽略$ page-&gt; get()。这只是一个cms框架api调用。
答案 0 :(得分:0)
如何以相反的顺序添加它们
$interval = DateInterval::createFromDateString('1 month');
$interval->invert = 1;
你的间隔现在是负一个月