2 votes

php boucle par date du mois

Avec le code indiqué ci-dessous, les résultats sont (voir ci-dessous). Ma question est de savoir pourquoi, après le 2009/11/01, il est suivi par le 2009/11/30 et le 2009/12/30 au lieu du 2009/12/01. Du 2009/06/01 ~ 2009/11/01 il n'y a pas de problème.

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")));
} 

?>

1voto

Álvaro G. Vicario Points 57607
<?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 />";
}

?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X