2013-05-20 5 views
0

У меня есть форма, в которой пользователи могут выбирать диапазон дат. Например, диапазон дат может быть:Получение диапазона дат, сгруппированных по месяцам

$start = "5/1/2013"; 
$end = "6/5/2013"; 

я могу легко захватить разницу в день между ними, делая что-то вроде:

$date1 = new DateTime($start); 
$date2 = new DateTime($end); 

$interval = $date1->diff($date2) 

Но если я хочу, чтобы создать массив, который будет содержать ежемесячная группировка, где каждый массив будет иметь минимальную и максимальную дату для каждой группы. Например:

array(2) { 
    [0]=> 
    array(2) { 
    [0]=> 
    string(8) "5/1/2013" 
    [1]=> 
    string(9) "5/30/2013" 
    } 
    [1]=> 
    array(2) { 
    [0]=> 
    string(8) "6/1/2013" 
    [1]=> 
    string(8) "6/5/2013" 
    } 
} 

Как я мог это сделать?

+0

Это не служба написания кода. Покажите, что вы пробовали, и мы поможем вам заставить его работать. – Barmar

ответ

0

Используйте $ dateX-> getTimestamp(), чтобы перебрать между этими двумя временными метками на интервал 60 * 60 * 24 * 30 (один месяц) и использовать дату («d/m/Y», $ time) для получить форматированную дату.

0

Проведите каждый месяц, используя строку +1 month в функции date и продолжайте движение до тех пор, пока не достигнете даты окончания. Вы можете использовать cal_days_in_month или строку t для date, чтобы получить количество дней в каждом месяце.

Смежные вопросы