Skip to content

Instantly share code, notes, and snippets.

@Elvinz
Last active December 15, 2019 18:25
Show Gist options
  • Save Elvinz/707fd61ee375e797cabfc38890237caf to your computer and use it in GitHub Desktop.
Save Elvinz/707fd61ee375e797cabfc38890237caf to your computer and use it in GitHub Desktop.
Битрикс. Фильтрация по дате
"Дата создания элемента"
Значение данной даты понятно по названию. Она имеет следующий вид отображения (записи) 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'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment