Frage

Gibt es eine Funktion, um ein Start- und Enddatum in Punkte von zu teilen $interval Tage (oder Monate)? Zum Beispiel:

$interval = new DateInterval('P10D');
$start    = new DateTime('2012-01-10');
$end      = new DateTime('2012-02-16');

$chunks = splitOnInterval($start, $end, $interval);

// Now chunks should contain
//$chunks[0] = '2012-01-10'
//$chunks[1] = '2012-01-20'
//$chunks[2] = '2012-01-30'
//$chunks[3] = '2012-02-09'
//$chunks[3] = '2012-02-16'

Ich finde DatePeriod Kann helfen, aber ich habe keine Möglichkeit gefunden, wie ich es benutzen kann.

War es hilfreich?

Lösung

Überprüfen Sie diesen Artikel über wie man über gültige Kalendertage iteriert.

In PHP ist es so etwas wie,

$start = strtotime('2012-01-10');
$end1 = strtotime('2012-02-16');
$interval   = 10*24*60*60; // 10 days equivalent seconds.
$chunks = array();
for($time=$start; $time<=$end1; $time+=$interval){
    $chunks[] = date('Y-m-d', $time);
}

Andere Tipps

Hier ist ein Beispiel, das über Tage iterieren kann. Über einen Monat arbeitet entsprechend mit anderen Intervall zusammen

<?php

$begin = new DateTime( '2012-11-01' );
$end = new DateTime( '2012-11-11' );
$end = $end->modify( '+1 day' );

$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);

foreach($daterange as $date){
echo $date->format("Y-m-d") . "<br>";
}
?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top