Как я могу преобразовать свой объект даты, чтобы использовать его в Symfony formbuilder? - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу использовать дату в своем формулере.

Когда я выкидываю переменную $date, я получаю вывод:

DateTime @1536139353 {#2479 ▼
  date: 2018-09-05 11:22:33.0 Europe/Paris (+02:00)
}

Когда я пытаюсь использовать ее сейчас в моем formbuilder как это:

$options['format'] = 'dd.MM.yyyy';
$options['data'] = new \DateTime($date);

Тогда я получаю сообщение об ошибке:

DateTime::__construct() expects parameter 1 to be string, object given

Ответы [ 3 ]

1 голос
/ 16 апреля 2020

Объяснение

DateTime - это объект, вам необходимо получить отформатированную строку от объекта здесь.
К счастью, DateTime объект предоставляет метод format(), который используется для вернуть дату / время в виде строки в желаемом формате.
В этом примере d.m.Y, что приведет к выводу 16.04.2020.

(new \DateTime($date))->format('d.m.Y');

Ваш вариант использования

Кажется, вы используете $date, который уже является объектом DateTime, для создания нового объекта DateTime. Это не будет работать и не нужно.

Поскольку $ date уже является экземпляром \ DateTime, вы можете напрямую использовать

$options['format'] = 'dd.MM.yyyy';
$options['data'] = $date->format('d.m.Y');

Источники

Формат

Чтобы выбрать нужный формат, посмотрите документацию здесь
https://www.php.net/manual/de/function.date.php

Объект DateTime

Вы должны передать интерпретируемую строку даты во время строительства. https://www.php.net/manual/de/class.datetime.php

1 голос
/ 16 апреля 2020

Вы можете использовать просто strtotime

дата эха ('Ymd H: i: s', strtotime ($ your_date_string));

или вы можете использовать DateTime :: createFromFormat () stati c method.

я надеюсь, что это поможет вам

0 голосов
/ 16 апреля 2020

$date уже является датой и временем:

DateTime @1536139353 {#2479 ▼
  date: 2018-09-05 11:22:33.0 Europe/Paris (+02:00)
}

Таким образом, нет необходимости преобразовывать его следующим образом new \DateTime($date);

Решение:

$options['format'] = 'dd.MM.yyyy';
$options['data'] = $date;
...