2009-12-25 3 views

Répondre

5
$startdate = strtotime("2009-12-25"); 
$enddate = strtotime("2009-12-30"); 
$steps = "1 day"; 

# Start 
$date = $startdate; 
while ($date <= $enddate) 
    { echo date("Y-m-d", $date)."<br>"; 
     $date = strtotime ("+".$steps, $date); // can be slow with large arrays, 
              // you can also just add 60*60*24 seconds 
              // to $date 

    } 
+0

FYI si ce tableau était très grand, exécuter strtotime() sur chaque élément du tableau peut être lent, alors gardez à l'esprit dans ces situations vous pouvez toujours stocker les dates sans les tirets, toujours en utilisant le format YearMonthDay, et vous pouvez exécuter simple> et TravisO

+0

C'est vrai. J'ai ajouté un commentaire. –

-2

Utilisation mktime avec une variable incrémenter pour la journée:

$array = array(); 
for ($x = 25; $x <= 30; $x++) { 
    $array[] = date('Y-m-d', mktime(0, 0, 0, 12, $x, 2009)); 
} 
+0

Bien sûr, cette approche ne peut pas gérer un cross-over mensuel –

+0

@therefromhere En fait, false, 'mktime (0, 0, 0, 12, 32, 2009)' est le 1er janvier 2010. Si vous recherchez un algorithme "date de début + x jours" ceci est à propos de cette façon la plus simple de le faire. – deceze

3

De plus, vous pouvez utiliser l'approche similaire à la première réponse.

$startDate = mktime(0, 0, 0, 12, 25, 2009); 
$endDate = mktime(0, 0, 0, 12, 30, 2009); 
for ($i=$startDate; $i<=$endDate; $i=$i+86400) { 
    $timeArray[]=date("Y-m-d", $i); 
} 

Résultat:

array (
    0 => '2009-12-25', 
    1 => '2009-12-26', 
    2 => '2009-12-27', 
    3 => '2009-12-28', 
    4 => '2009-12-29', 
    5 => '2009-12-30', 
) 
Questions connexes