Битрикс. Фильтрация по дате

Битрикс. Фильтрация по дате
Блог
19.11.2018 09:21:00

В данной заметке мы рассмотрим как фильтровать по дате элемента в инфоблоке. Частно нам требуется ограничить вывод элементов, например новостей по дате. Дат в битриксе несколько и они имеют свой формат.

"Дата создания элемента"

Значение данной даты понятно по названию. Она имеет следующий вид отображения (записи) DD.MM.YYYY HH:MI:SS, где DD - день месяца, MM - месяц, YYYY - год, HH - час (в формате 24), MI - минуты, SS - секунды. Или в php имеют формат 'd.m.Y H:i:s'.

Соответственно для фильтрации по дате создания, надо указывать дату согласно данному формату.

Например

$arFilter['>=DATE_CREATE'] = '19.11.2018 09:00:00';
или 
$arFilter['>=DATE_CREATE'] = date('d.m.Y H:i:s');


Если нам надо указать диапазон даты (с 01.11.2018 00:00:00 по 19.11.2018 23:59:59)

$arFilter['>=DATE_CREATE'] = '01.11.2018 00:00:00';
$arFilter['<=DATE_CREATE'] = '19.11.2018 23:59:59';


Или еще распространенный вариант вывести записи не старше 7 дней от сегодня.

$now = new DateTime();
$arFilter = array(">DATE_CREATE" => $now->modify('-7 day')->format('d.m.Y H:i:s'));


"Дата активности"

В инфоблоке у элемента предусмотрены дата начала активности "DATE_ACTIVE_FROM" и дата окончания активности "DATE_ACTIVE_TO". Т.е. элемент может быть создан в любую дату, но отображаться на сайте будет только начиная с даты начала активности и прекратит показываться после даты окончания активности (если она конечно выбрана)

Данные даты имеют такой же формат 'd.m.Y H:i:s' и следовательно примеры выше подходят и для них.

Например

$arFilter['>=DATE_ACTIVE_FROM'] = '19.11.2018 09:00:00';
или 
$arFilter['>=DATE_ACTIVE_FROM'] = date('d.m.Y H:i:s');


Свойство элемента инфоблока "Дата" или "Дата/время"

Данное свойство уже содержит другой формат даты, а именно YYYY-MM-DD HH:MI:SS или 'Y-m-d H:i:s'. Теперь рассмотрим примеры с данным свойством. Назовем его например "PROPERTY_DATE".

$arFilter['>=PROPERTY_DATE'] = '2018-11-19 09:00:00';
или 
$arFilter['>=PROPERTY_DATE'] = date('Y-m-d H:i:s');


Если нам надо указать диапазон даты (с 01.11.2018 00:00:00 по 19.11.2018 23:59:59)

$arFilter['>=PROPERTY_DATE'] = '2018-11-01 00:00:00';
$arFilter['<=PROPERTY_DATE'] = '2018-11-19 23:59:59';

Или еще распространенный вариант вывести записи не старше 7 дней от сегодня.

$now = new DateTime();
$arFilter = array(">PROPERTY_DATE" => $now->modify('-7 day')->format('Y-m-d H:i:s'));


Что я предлагаю

Создам для Вас -

  • Уникальный адаптивный дизайн
  • Заключение договора

Заполните форму