Разница даты - программирование
Подтвердить что ты не робот

Разница даты

У меня есть сущность со стартовой датой и датой окончания.

Можно ли получить разницу во времени между ними, используя twig?

4b9b3361

Ответ 1

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

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

$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);

Многоразовый способ заключается в создании расширения ветки (документируется по той же ссылке). Это все еще легко.

Ответ 2

Так как 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 DateTime объект имеет diff() метод, который возвращает объект DateInterval с разница результатов между endDate и beginDate Twig

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

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

Примечание: нет необходимости обертывать endDate или startDate с помощью функции date, если эта переменная уже является объектом DateTime.

Примечание2: DateTime используется здесь как синоним DateTimeInterface.

Ответ 3

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

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