I've got an entity with a starting date and an ending date.
Is it possible to get the difference in time between them by using twig?
So that's how we can compare dates in Twig. The main thing is to get both dates in the same format and then compare. If you need specificity, you can use Epoch time; if you need less specificity, you can convert the date to a string and compare them that way.
Since PHP 5.3 There is another option without to write an extension.
This example show how to calc the plural day/days
{# 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 %}
Explanation:
PHP 5.3 DateTime
object has diff()
method which return a DateInterval
object with the result difference between endDate
and beginDate
Twig
Twig date
function always return a DateTime
object so we can call diff
method
Finally we can access to the properties of the DateInterval
object or format it with the Twig date
filter.
Note: There is no need of wrap endDate
or startDate
with the date
function if the variable is already a DateTime
object.
Note2: DateTime
is used here as a synonym of DateTimeInterface
.
There's no built-in function to do that, but you can easily do it yourself, extending twig is easy!
The quick'n'easy way is to do it with twig's simple function class:
$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);
The reusable way is to create a twig extension (documented on the same link). That's still easy.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With