Задача: найти временные периоды с начала по окончание 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 для расчёта периодов начиная с текущего месяца.
