Pregunta

¿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.

¿Fue útil?

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
scroll top