2011-10-21 6 views
1

今日から始まる5日間の連続したリストを生成するには、次のコードが必要です。それは次の出力を与えるしかしDatePeriodでDateTime :: add()を使用すると予期しない結果が発生する

$startDay = new DateTime(); 
for($i = 0; $i <=4; $i++){ 
    $courseDay = $startDay->add(new DateInterval("P{$i}D")); 
    print_r($courseDay->format('j-M-Y') . "\n"); 
} 

(2011年10月21日)今日実行します -

21-Oct-2011 
22-Oct-2011 
24-Oct-2011 
27-Oct-2011 
31-Oct-2011 

私はコードに何か、他にすることができます誰にも表示されないのですか?なぜそれは日を飛ばしているのですか?

答えて

1

コードは、DateInterval :: add()がインスタンス化されたオブジェクトを変更した後、メソッドチェーンを可能にするために、変更されたバージョンのオブジェクトを返すように、以下のようにリファクタリングする必要があります。

私は私が最初にrtm :)

$startDay = new DateTime(); 
for($i = 0; $i <=4; $i++){ 
    print_r($startDay->format('j-M-Y') . "\n"); 
    $startDay->add(new DateInterval("P1D")); 
} 
を持っている必要がありますね
関連する問題