php中的两个日期,对于日期之间的每个循环,是否相反?

php中的两个日期,对于日期之间的每个循环,是否相反?,php,Php,这与这里提出的另一个问题有关,这个问题很完美,但我需要相反的答案,你知道如何实现它吗 原来的问题在这里 您可以使用+方法: 是的,您可以使用日期相反的格式 $begin = new DateTime( '2010-05-01' ); $end = new DateTime( '2010-05-10' ); $interval = DateInterval::createFromDateString('1 day'); $period = new DatePeriod($begin, $in

这与这里提出的另一个问题有关,这个问题很完美,但我需要相反的答案,你知道如何实现它吗

原来的问题在这里 您可以使用+方法:


是的,您可以使用日期相反的格式

$begin = new DateTime( '2010-05-01' );
$end   = new DateTime( '2010-05-10' );

$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);

$reverse = array_reverse(iterator_to_array($period));  //sorts in descending order...

foreach ( $reverse as $dt )
  echo $dt->format( "l Y-m-d H:i:s\n" ); //apply the format you want.

如果我错了,请使用PHP5.5生成器评论…

function period($begin, $interval, $end) {
    if ($begin < $end) {
        while ($begin <= $end) {
            yield $begin;
            $begin->add($interval);
        }
    }else {
        while ($end <= $begin) {
            yield $begin;
            $begin->sub($interval);
        }
    }
}

$interval = new \DateInterval('P1D');

$begin = new \DateTime( '2010-05-10' );
$end = new \DateTime( '2010-05-01' );

foreach (period($begin, $interval, $end) as $dt) {
    echo $dt->format( "l Y-m-d H:i:s" ), PHP_EOL;
}

$begin = new \DateTime( '2010-05-01' );
$end = new \DateTime( '2010-05-10' );

foreach (period($begin, $interval, $end) as $dt) {
    echo $dt->format( "l Y-m-d H:i:s" ), PHP_EOL;
}
功能周期($begin,$interval,$end){
如果($begin<$end){
while($begin add($interval);
}
}否则{
while($end sub($interval));
}
}
}
$interval=new\DateInterval('P1D');
$begin=new\DateTime('2010-05-10');
$end=new\DateTime('2010-05-01');
foreach(期间($begin,$interval,$end)为$dt){
echo$dt->format(“ly-m-dh:i:s”),PHP\u EOL;
}
$begin=new\DateTime('2010-05-01');
$end=new\DateTime('2010-05-10');
foreach(期间($begin,$interval,$end)为$dt){
echo$dt->format(“ly-m-dh:i:s”),PHP\u EOL;
}

这是对象,而不是数组,它不能与反向数组一起工作。请严格按照我的要求执行。谢谢。我已执行了数组反向操作,但错过了迭代器数组。您无法使用数组函数对
日期周期
对象进行排序。sry,已更改为array\u reverse
function period($begin, $interval, $end) {
    if ($begin < $end) {
        while ($begin <= $end) {
            yield $begin;
            $begin->add($interval);
        }
    }else {
        while ($end <= $begin) {
            yield $begin;
            $begin->sub($interval);
        }
    }
}

$interval = new \DateInterval('P1D');

$begin = new \DateTime( '2010-05-10' );
$end = new \DateTime( '2010-05-01' );

foreach (period($begin, $interval, $end) as $dt) {
    echo $dt->format( "l Y-m-d H:i:s" ), PHP_EOL;
}

$begin = new \DateTime( '2010-05-01' );
$end = new \DateTime( '2010-05-10' );

foreach (period($begin, $interval, $end) as $dt) {
    echo $dt->format( "l Y-m-d H:i:s" ), PHP_EOL;
}