Еще раз о работе с полями типа дата (время) в PHP и Битрикс 24

Начинающие программисты, которые начинают свой профессиональный путь как правило с написания вебхуков, часто сталкиваются с ошибкой, пытаясь вставить в поля сущностей типа Даты текстовые значения.

fields' => [
          'ENTITY_ID' => $id,
          'ENTITY_TYPE' => 'deal',
          'CREATED' => '2020-06-16T16:08:32+03:00',
          'COMMENT' => $data
]

Такой подход ведет к только одному результату — реальная дата не добавляется, вместо нее подставляется системная, равная текущей дате и времени сервера.

Для вставки необходимой даты на практике необходимо использовать «обертку» из функций date и strtotime. Представим, что к нам приходит массив $ev с годом, месяцем и датой рождения клиента. Для вставки даты в поле «День рождения» мы будем писать в PHP:

$bdate = date("d-m-Y", strtotime($ev['birthday_day'].'-'.$ev['birthday_month'].'-'.$ev['birthday_year']));

Если у нас есть задача учесть переходы на летнее \ зимнее время, то можете дополнительно воспользоваться рекомендациями из данной статьи на этом сайте.

Наконец, последний совет связан с работой с датами исключительно в коробочной версии системы. В рамках Bitrix Framework существует встроенная функция работы с датой ConvertDateTime, которая очень помогает в задачах фильтрации больших списков данных. Представим, что имеем на входе дату в текстовом формате.

$datebeg = '01.03.2020';

Для того, чтобы отсечь по ней инфоблок или список сделок мы должны писать в массиве фильтра:

$arFilterc = array('>DATE_CREATE'=>ConvertDateTime($datebeg, "DD.MM.YYYY")." 00:00:00");

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