2017-01-20 4 views
2

Я пытаюсь отобразить DateInterval в Twig, используя следующий код:Отображение DateInterval в Twig

{{ event.endTime.diff(event.startTime)|date("i's''") }} 

где event является Entity, кто получает 2 DateTime объекта: endTime и startTime. С этой командой я получил этот результат:

i's'' 

Вместо min'sec'' как 08'15''

Говорят в date doc что

дата фильтра, принимает [...] DateInterval экземпляров

Эта работа для отображения мин и сек от объекта даты.

Обратите внимание, что делать: {{ (event.endTime.diff(event.startTime))|date("i's''") }} ничего не меняет

Я также попытался {{ date(event.endTime.diff(event.startTime))|date("i's''") }}, но это приведет к исключению Object of class DateInterval could not be converted to string

Я также видел time_diff из Twig Extensions, но это возвращает строку (in или ago) вместо объекта Date, тогда я не могу отображать его, как я хочу.

Дайте мне знать, если вам нужна дополнительная информация. Спасибо за помощь.

+2

'(новый \ DateTime ('завтра')) -> Diff (новый \ DateTime ('теперь')) -> формат («i's '')) также также дает« i », поэтому я бы сказал, что это не« веточка ». Из [руководства] (https://secure.php.net/manual/en/dateinterval.format.php): * «Следующие символы распознаются в строке параметров формата. Каждый символ формата должен иметь префикс знака процента (%). * * – Yoshi

+0

Большое спасибо. На самом деле мне пришлось добавить '%' перед 'i' и' s' – homer

ответ

4

Как @Yoshi сказал:

(new \DateTime('tomorrow'))->diff(new \DateTime('now'))->format("i's''") также дает "i's''", так что я бы сказал, что это не веточка-вещь. Из руководства:

«Следующие символы распознаются в параметре формата . Каждый символ формата должен иметь префикс знака процента (%)».

Так исправить мой proble я просто должен был сделать:

{{ event.endTime.diff(event.startTime)|date("%i'%s''") }}