2010-11-26 79 views
0

我能夠顯示從當前日期天至未來3個月,這段代碼:PHP日迭代

$begin = new DateTime(); 
$end = new DateTime(date('Y-m-d', strtotime('+3 months', strtotime(date("d-m-Y"))))); 
$interval = DateInterval::createFromDateString('1 day'); 
$days = new DatePeriod($begin, $interval, $end); 

foreach ($days as $day) { 
    ... 
} 

我覺得代碼可以縮短特別是對$end。你能幫忙嗎?

哦,我也想過去3個月。我改變'+3 months''-3 months'但沒有運氣。有任何想法嗎?

回答

1

關於第一個問題,你可以直接寫

$end = new DateTime('+3 months'); 

要回去3個月,使用3 months ago代替-3 months

+0

原來我的代碼顯示錯誤,-3個月也應該有效。謝謝。 – 2010-11-26 08:40:19

4
$begin = new DateTime(); 
$end  = new DateTime('+ 3 months'); 
$interval = DateInterval::createFromDateString('1 day'); 
$days  = new DatePeriod($begin, $interval, $end); 
foreach ($days as $day) { 
    var_dump($day); 
} 

$begin = new DateTime('- 3 months'); // '3 months ago' should also work 
$end  = new DateTime(); 
$interval = DateInterval::createFromDateString('1 day'); 
$days  = new DatePeriod($begin, $interval, $end); 
foreach ($days as $day) { 
    var_dump($day); 
} 
+0

感謝Stefan爲完整答案+1。 – 2010-11-26 08:45:28