← К заметкам

Заметки

CTaskItem::add: Incorrect date/time при передаче DEADLINE

Задача создаётся, пока в массиве нет DEADLINE. После добавления строки вроде 2026-09-29T12:00:00+03:00 вызов CTaskItem::add заканчивается сообщением Incorrect date/time.

Здесь легко смешать REST и старый PHP API задач. Для CTaskItem дату следует подготовить в формате текущего сайта. Штатная ConvertTimeStamp с параметром FULL возвращает дату вместе со временем.

Фрагмент для PHP-консоли коробки после подключения ядра. Переменная $i_user_id содержит ID сотрудника, от имени которого создаётся задача; в примере он же исполнитель.

if (!\Bitrix\Main\Loader::includeModule('tasks')) {
	throw new RuntimeException('Модуль tasks не подключён');
}

$i_deadline = strtotime('+7 days');
$ar_fields = [
	'TITLE' => 'Подготовить схему обмена',
	'RESPONSIBLE_ID' => $i_user_id,
	'DEADLINE' => ConvertTimeStamp($i_deadline, 'FULL'),
];

$ob_task = \CTaskItem::add($ar_fields, $i_user_id);
$ar_task = $ob_task->getData();
echo $ar_task['ID'];

Это семь календарных дней. Расчёт рабочих дней — отдельная задача; изменение формата даты не учитывает выходные.

Не закрепляйте d.m.Y как универсальный формат всех методов Битрикса. Он может убрать конкретную ошибку на русской установке, но потеряет время и зависит от настроек сайта. Для REST используйте формат, указанный в документации выбранного REST-метода.

Если читаете задачу через другой PHP-класс и получаете объект даты, сначала явно преобразуйте его для API, которым будете сохранять. Совпадение назначения двух классов не делает их форматы входных данных одинаковыми.

Документация: CTaskItem::add; ConvertTimeStamp; Поля старого API задач.