Отображение DateInterval в Twig

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

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

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

i's''

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

В документе по дате сказано, что

Фильтр даты принимает [...] экземпляры 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, то я не могу отобразить его так, как хочу.

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


person homer    schedule 20.01.2017    source источник
comment
(new \DateTime('tomorrow'))->diff(new \DateTime('now'))->format("i's''") также дает "i's''", поэтому я бы сказал, что это не веточка. Из руководства: Следующие символы распознаются в строка параметров формата. Перед каждым символом формата должен стоять знак процента (%).   -  person Yoshi    schedule 20.01.2017
comment
Большое спасибо, на самом деле мне пришлось добавить % перед i и s   -  person homer    schedule 20.01.2017


Ответы (1)


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

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

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

Итак, чтобы исправить мою проблему, мне просто нужно было сделать:

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