Aufteilung eines Start- und Enddatums nach Intervall in PHP [Duplikat
-
26-10-2019 - |
Frage
Diese Frage hat hier bereits eine Antwort:
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.
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