Разница в дате 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) }}