2010-11-26 16 views
0

Je suis en mesure de montrer jours à compter de la date actuelle à 3 prochains mois avec ce code:Day PHP iterator

$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) { 
    ... 
} 

je me sens le code peut être raccourci en particulier pour $end. Pourriez-vous aider?

Oh, je veux aussi avoir les 3 mois précédents. J'ai changé '+3 months' à '-3 months' mais pas de chance. Des idées?

Répondre

1

Pour votre première question, vous pouvez écrire directement

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

Pour revenir 3 mois, utilisez 3 months ago au lieu de -3 months.

+0

Il s'avère que mon code ne s'affichait pas correctement, -3 mois devraient également fonctionner. Merci. –

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

Merci Stefan pour une réponse complète, +1. –

+0

Stefan, si je veux avoir 3 mois à partir de certaine date (pas actuel)? –

+0

'$ begin = new DateTime ('2010-01-01 12:00:00');' et '$ begin-> modify ('- 3 mois);' –