2017-04-21 19 views
0

2つの日付があり、2つの日付の間に毎日表示するループを実行したいと思います。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); 

これは、あなたの希望の日付に昨日から毎日含む完全な配列を提供します。

関連する問題