Начинающие программисты, которые начинают свой профессиональный путь как правило с написания вебхуков, часто сталкиваются с ошибкой, пытаясь вставить в поля сущностей типа Даты текстовые значения.
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");