Dividir una fecha de inicio y finalización por intervalo en PHP [duplicado
-
26-10-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
¿Hay alguna función para dividir una fecha de inicio y finalización en folletos de $interval
días (o meses)? Por ejemplo:
$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'
pienso DatePeriod
Puede ayudar, pero no encontré de ninguna manera sobre cómo puedo usarlo.
Solución
Consulte este artículo en Cómo iterar en días de calendario válidos.
En PHP es algo así como,
$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);
}
Otros consejos
Aquí hay un ejemplo para iterar durante los días, durante el mes está trabajando en consecuencia con otro intervalo
<?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>";
}
?>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow