Как получить все даты в заданном диапазоне дат (между двумя датами) на php

27.07.2013
Потребовалось получить значения всех дат в диапазоне, для php версии 5.3+ можно воспользоваться DatePeriod, но для более старых версий пришлось найти альтернативный путь.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function createDateRangeArray($strDateFrom,$strDateTo)
{
    // takes two dates formatted as YYYY-MM-DD and creates an
    // inclusive array of the dates between the from and to dates.

    // could test validity of dates here but I'm already doing
    // that in the main script

    $aryRange=array();

    $iDateFrom=mktime(1,0,0,substr($strDateFrom,5,2),     substr($strDateFrom,8,2),substr($strDateFrom,0,4));
    $iDateTo=mktime(1,0,0,substr($strDateTo,5,2),     substr($strDateTo,8,2),substr($strDateTo,0,4));

    if ($iDateTo>=$iDateFrom)
    {
        array_push($aryRange,date('Y-m-d',$iDateFrom)); // first entry
        while ($iDateFrom<$iDateTo)
        {
            $iDateFrom+=86400; // add 24 hours
            array_push($aryRange,date('Y-m-d',$iDateFrom));
        }
    }
    return $aryRange;
}

echo '<pre>';
print_r(createDateRangeArray('2013-04-11', '2013-04-20'));
echo '</pre>';

Данный пример иллюстрирует использование дат в формате SQL, для русских дат нужно переконвертировать полученный массив.


Категории: PHP
Яндекс.Метрика