2009-12-23 5 views
2

Pourvu du code indiqué ci-dessous, les sorties sont (voir ci-dessous). Ma question est la suivante: après 2009/11/01, il s'agit des 2009/11/30 et 2009/12/30 au lieu du 2009/12/01. Du 2009/06/01 ~ 2009/11/01 il n'y a pas de problème.boucle php par date du mois

sortie
2009/06/01
2009/07/01
2009/08/01
2009/09/01
2009/10/01
2009/11/01
2009/11/30
2009/12/30

mon code

<?php 

$startdate = "2009/06/01"; 
$enddate = "2009/12/31"; 

$start = strtotime($startdate); 
$end = strtotime($enddate); 

$currentdate = $start; 
while($currentdate < $end) 
{ 
    $cur_date = date('Y/m/d',$currentdate); 
    $month = date('m', $currentdate); 
    $year = date('Y', $currentdate); 
    $monthLength = daysOfMonth($month, $year); 
    $currentdate += $monthLength; 

    echo $cur_date . "<br />"; 
} 


function daysOfMonth($month, $year) 
{ 
    return (86400 * date("t", strtotime($year."-".$month."-01"))); 
} 

?> 
+0

est la réponse d'Alvaro adéquate? Vous devriez soit le marquer comme Accepté ou commenter ce qui ne va pas encore. – philfreo

Répondre

1
<?php 

$startdate = "2009/06/01"; 
$enddate = "2009/12/31"; 

$start = strtotime($startdate); 
$end = strtotime($enddate); 

$currentdate = $start; 
while($currentdate < $end) 
{ 
     $cur_date = date('Y/m/d', $currentdate); 

     $currentdate = strtotime('+1 month', $currentdate); 

     echo $cur_date . "<br />"; 
} 

?> 
+0

salut alvaro, désolé pour mon retard a répondu, en raison de vacances de Noël, je ne pouvais pas travailler et lire votre réponse. BTW, votre code fonctionne parfaitement, que diriez-vous si la date de début n'a pas commencé avec le jour 01, disons $ startdate = "2009/06/06"? Merci beaucoup – tirso

+0

Est-ce une nouvelle question? Une fois que vous avez un horodatage Unix, vous avez un grand choix de fonctions pour le manipuler. Vous pouvez extraire des fragments avec date() et générer de nouveaux horodatages avec mktime(). –

+0

salut alvaro merci. Tirso – tirso

Questions connexes