Получаю на фронте данные с помощью
В контроллере метод в упрощённом виде выглядит так
При этом, в таблице DislocationTable, из которой я получаю данные много полей типа DatetimeField.
По умолчанию, результат выполнения метода пропускается через Bitrix\Main\Engine\Response\processData, в котором если тип DateTime, то жёстко возвращается дата в формате ISO 8601
По логике, думаю раз получаю в этом формате, то и отправлять нужно в нём же.
При этом, если с фронта отправить данные в формате ISO 8601 (например 2019-03-25T12:05:00.000+05:00) на тот же контроллер и попытаться записать в ту же таблицу, то получаем исключение Incorrect date/time
DateTime не может спарсить дату потому, что использует дефолтный формат d.m.Y H:i:s (я пока не понял откуда он берётся, ведь в Bitrix\Main\Context\Culture формат для даты-времени другой. Хотя разве что из "Настройки Битрикс24").
Это нормальное поведение системы или я что-то делаю не так?)
Код |
---|
BX.ajax.runAction() |
Код |
---|
/** * @return array * @throws \Exception */ public function getAction(): array { $rows = []; $dislocations = DislocationTable::getList()->fetchCollection(); foreach ($dislocations as $dislocation) { $fields = array_filter( $dislocation->collectValues() ); $rows[] = $fields; } return [ 'rows' => $this->convertKeysToCamelCase( $rows ), ]; } |
При этом, в таблице DislocationTable, из которой я получаю данные много полей типа DatetimeField.
По умолчанию, результат выполнения метода пропускается через Bitrix\Main\Engine\Response\processData, в котором если тип DateTime, то жёстко возвращается дата в формате ISO 8601
Код |
---|
if ($data instanceof DateTime) { return date('c' , $data->getTimestamp()); } |
По логике, думаю раз получаю в этом формате, то и отправлять нужно в нём же.
При этом, если с фронта отправить данные в формате ISO 8601 (например 2019-03-25T12:05:00.000+05:00) на тот же контроллер и попытаться записать в ту же таблицу, то получаем исключение Incorrect date/time
DateTime не может спарсить дату потому, что использует дефолтный формат d.m.Y H:i:s (я пока не понял откуда он берётся, ведь в Bitrix\Main\Context\Culture формат для даты-времени другой. Хотя разве что из "Настройки Битрикс24").
Это нормальное поведение системы или я что-то делаю не так?)