在 Twig 中显示 DateInterval

Displaying a DateInterval in Twig

我正在尝试使用以下代码在 Twig 中显示 DateInterval:

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

其中 event 是获得 2 个 DateTime 对象的实体:endTimestartTime。使用该命令我得到了这个输出:

i's''

而不是像 08'15''

这样的 min'sec''

据说date doc

The date filter accepts [...] DateInterval instances

这项工作用于显示日期对象的分钟和秒。

请注意:{{ (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

我也从 Twig Extensions 看到 time_diff 但是这个 return 是一个字符串(inago)而不是 Date 对象,然后我想怎么显示都显示不出来

如果您需要更多信息,请告诉我。谢谢你的帮助。

正如@Yoshi 所说:

(new \DateTime('tomorrow'))->diff(new \DateTime('now'))->format("i's''") also gives "i's''", so I'd say this is not a twig-thing. From the manual:

"The following characters are recognized in the format parameter string. Each format character must be prefixed by a percent sign (%)."

因此,为了解决我的问题,我只需要这样做:

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

在方法 format 中放入参数 'i''s'小写,当要显示的值小于10时,放个位数。

示例,如果您需要通过显示前导零 (05:02) 来显示 5 分 2 秒的时间。你必须把参数大写,就像这样:

{{ event.endTime.diff(event.startTime)|date("%I:%S") }}

可以在以下位置找到允许的参数:DateInterval format