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;
}