嗨我有脚本给我一周之间的日期列表。 我需要反向订单。 alredy尝试了rsort,reverse_array,以及更多的一些错误。
感谢。
脚本
$date2 = "$lastweek2";
$date1 = "$lastweek1";
$start = new DateTime($date2);
$end = new DateTime($date1);
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($start, $interval, $end);
echo "<br>";
foreach ($period as $dt) {
echo $dt->format("Y-m-d") . "<br>\n";
}
回声就像这样
2014-08-09
2014-08-10
2014-08-11
2014-08-12
2014-08-13
2014-08-14
2014-08-15
逆转
2014-08-15
2014-08-14
2014-08-13
2014-08-12
2014-08-11
2014-08-10
2014-08-09
答案 0 :(得分:22)
$ period = array_reverse(iterator_to_array($ period));
答案 1 :(得分:8)
使用否定一天的时间间隔以及两个日期之间的天数差异,您可以完成相同的操作,而无需使用array_reverse(iterator_to_array())
或构建其他数组。
$start = new \DateTime('2014-08-15');
$end = new \DateTime('2014-08-09');
$diff = $end->diff($start);
$interval = \DateInterval::createFromDateString('-1 day');
$period = new \DatePeriod($start, $interval, $diff->days);
foreach ($period as $date) {
echo $date->format('Y-m-d') . PHP_EOL;
}
<强>结果:强>
2014-08-15
2014-08-14
2014-08-13
2014-08-12
2014-08-11
2014-08-10
2014-08-09
通过这种方式,它告诉DatePeriod
减去1天,从diff返回的天数,而不是在结束日期之前累加。
答案 2 :(得分:5)
只需将日期放在数组中,然后使用array_reverse()
$dates = array();
foreach ($period as $dt) {
$dates[] = $dt->format("Y-m-d");
}
$dates = array_reverse($dates);
echo implode("<br>\n", $dates);
答案 3 :(得分:2)
$date1 = "2014-08-15";
$date2 = "2014-08-09";
$start = new DateTime($date2);
$end = new DateTime($date1);
$i = DateInterval::createFromDateString('1 day');
while ($end >= $start) {
echo $end->format("Y-m-d") . "<br>\n";
$end = $end->sub($i);
}