Разница в дате Twig

У меня есть объект с датой начала и датой окончания.

можно ли получить разницу во времени между ними с помощью веточки?

3 ответов


С PHP 5.3 есть еще один вариант без написания расширения.

этот пример показывает, как вычислить множественное число День / дней

{# endDate and startDate are strings or DateTime objects #}
{% set difference = date(endDate).diff(date(startDate)) %}
{% set leftDays = difference.days %}
{% if leftDays == 1 %}
  1 day
{% else %}
  {{ leftDays }} days
{% endif %}

объяснение:

PHP 5.3 и diff() метод, который возвращает DateInterval объект с разницей результатов между endDate и beginDate Прутик!--18-->

веточка date функция всегда возвращает DateTime объект, поэтому мы можем вызвать diff метод

наконец, мы можем получить доступ к свойствам DateInterval объект или отформатировать его с помощью веточки .

Примечание: нет необходимости обернуть endDate или startDate С


для этого нет встроенной функции, но вы можете легко сделать это сами,продление ветки - это легко!

быстрый способ сделать это с помощью простого класса функций twig:

$function = new Twig_SimpleFunction('date_difference', function ($start, $end) {
    // ... calculate difference and return it
});

// assuming $twig is an instance of Twig_Environment
$twig->addFunction($function);

многоразовый способ-создать расширение twig (документированное по той же ссылке). Это все еще легко.


также обратите внимание, что существуетДата выдачи из Sensio Labs, которые предлагают фильтр time_diff.

тогда вы можете использовать его следующим образом:{{ entity.ending_date|time_diff(entity.starting_date) }}