2012-02-16 3 views
0

Есть ли какая-либо функция для деления даты начала и окончания на чашки $interval дней (или месяцев)? Например:Разбиение даты начала и окончания по интервалу в PHP

$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' 

Я думаю DatePeriod может помочь, но я не нашел способ, как я могу его использовать.

+0

* (TIP) * Http: // derickrethans .nl/talk/time-zendcon10.pdf – Gordon

+2

@ Гордон спасибо, извините, я не понял, что это дубликат. Проголосовал за закрытие. – gremo

ответ

2

Проверьте эту статью на how to iterate over valid calender days.

В РНР его что-то подобное,

$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); 
} 
1

Вот пример перебрать дней, в течение месяца соответственно работает с другим интервалом

<?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>"; 
} 
?> 
Смежные вопросы