Получаю на фронте данные с помощью
В контроллере метод в упрощённом виде выглядит так
При этом, в таблице 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").
Это нормальное поведение системы или я что-то делаю не так?)