obtener fechas entre diferencia calcular datetime twig datediff

datetime - fechas - Diferencia de fecha de la ramita



diferencia de 2 fechas php (3)

Tengo una entidad con una fecha de inicio y una fecha de finalización.

¿Es posible obtener la diferencia en el tiempo entre ellos utilizando twig?


Desde PHP 5.3 hay otra opción sin escribir una extensión.

Este ejemplo muestra cómo calcular el día / día plural.

{# 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 %}

Explicación:

PHP 5.3 El objeto DateTime tiene un método diff() que devuelve un objeto DateInterval con la diferencia de resultado entre endDate y beginDate Twig

La función de date Twig siempre devuelve un objeto DateTime para que podamos llamar al método diff

Finalmente, podemos acceder a las propiedades del objeto DateInterval o formatearlo con el filtro de date Twig.

Nota: No es necesario ajustar endDate o startDate con la función de date si la variable ya es un objeto DateTime .

Nota2: DateTime se utiliza aquí como sinónimo de DateTimeInterface .


No hay una función incorporada para hacer eso, pero puedes hacerlo fácilmente tú mismo, ¡ extender ramita es fácil!

La forma más rápida es hacerlo con la clase de función simple de 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);

La forma reutilizable es crear una extensión de ramita (documentada en el mismo enlace). Eso sigue siendo fácil.


También tenga en cuenta que existe una extensión de fecha de Sensio Labs que ofrece un filtro time_diff.

Entonces puedes usarlo así: {{ entity.ending_date|time_diff(entity.starting_date) }}