ГлавнаяБлогНа 6 месяцев вперед

На 6 месяцев вперед

Рамиль Юналиев
Рамиль Юналиев
E-Commerce Lead
13 ноября 2009 г.
1 мин чтения

Задача: найти временные периоды с начала по окончание 6 следующих месяцев.

Функция _GetDateM() возвращает массив с информацией о шести месяцах, включая количество дней в месяце, название месяца, даты начала и окончания периода.

static public function _GetDateM()
{
    $sDate = ConvertTimeStamp();
    $_arDateM = array(
        '01' => 'Январь',
        '02' => 'Февраль',
        '03' => 'Март',
        '04' => 'Апрель',
        '05' => 'Май',
        '06' => 'Июнь',
        '07' => 'Июль',
        '08' => 'Август',
        '09' => 'Сентябрь',
        '10' => 'Октябрь',
        '11' => 'Ноябрь',
        '12' => 'Декабрь'
    );
    $stmp = MakeTimeStamp($sDate, "DD.MM.YYYY");
 
    $arResult = array();
 
    for ($i = 1; $i <= 6; $i++)
    {
        $arParam = array();
        $arAdd = array("DD" => 0, "MM" => 1, "YYYY" => 0);
        $stmp = AddToTimeStamp($arAdd, $stmp);
        $_M = date("m", $stmp);
        $_YYYY = date("Y", $stmp);
        $arParam['D_COUNT'] = cal_days_in_month(CAL_GREGORIAN, $_M, $_YYYY);
        $arParam['M_NAME'] = $_arDateM[$_M];
        $arParam['DATE_FROM'] = '01.' . $_M . '.' . $_YYYY;
        $arParam['DATE_TO'] = $arParam['D_COUNT'] . '.' . $_M . '.' . $_YYYY;
        $arParam['DATE_MY'] = $_M . '.' . $_YYYY;
        $arResult[$_M] = $arParam;
    }
    return $arResult;
}

Используются Bitrix-функции ConvertTimeStamp, MakeTimeStamp, AddToTimeStamp и стандартные PHP-функции cal_days_in_month, date для расчёта периодов начиная с текущего месяца.