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) }}