2017-04-21 73 views
0

我有兩個日期,我想要做一個循環來顯示兩個日期之間的每一天。DateInterval()從今天直到過去的日期減少

例:

$begin=date("Y-m-d"); 
$end="2017-01-01"; 

我知道我可以過去,直到今天在做的日期,​​但我不從今天konw直到在過去的某個日期。一個主意 ?

我的腳本:

$today=date("Y-m-d"); 
$begin = new DateTime($today); 
$end = new DateTime('2017-01-01'); 
$begin = $begin->modify('-1 day'); 
$interval = new DateInterval('P1D'); 
$period = new DatePeriod($begin, $interval, $end); 



foreach ($period as $dt) 
{ 
    $datedisplay=$dt->format("Ymd"); 
    echo ''.$datedisplay.'<BR>'; 
} 

謝謝!

+0

你的意思是說你想顛倒'DatePeriod'迭代器的循環方向嗎?你不能直接反轉一個迭代器,但你可以遍歷它一次,然後使用類似'array_reverse'的方法反轉所收集的值。 – Halcyon

+0

是的,我想扭轉循環顯示日期從「今天」到「昨天」 – Bisvan

+0

時間不會倒退... – Narf

回答

0

基於該解決方案在這裏找到:PHP: Return all dates between two dates in an array

您可能要做到以下幾點:

$today=date("Y-m-d", strtotime('-1 day')); // We remove oneday from today 
$begin = $today; 
$end = '2017-01-01'; 

function getDatesFromRange($a,$b,$x=0,$dates=[]){ 
    while(end($dates)!=$b && $x=array_push($dates,date("Y-m-d",strtotime("$a +$x day")))); 
    return $dates; 
} 
$arrayDates = getDatesFromRange($end,$begin); 
$reverseDates = array_reverse($arrayDates); // then we reverse array 

var_dump($reverseDates); 

這會給你一個包含從昨天天天通緝日期全陣列。

相關問題