Michael's solution works in most cases, but there are some special cases you should consider when you want to have a universal solution.
First, an object that you test for having a getTimestamp()
method doesn't have to be a DateTime
instance. I can thing of many cases when the timestamp field would be useful in an object, so I would test the getTimezone()
method instead.
Second, if my_var
is an object having a magic __call
method defined, then all such tests would turn out positive. That's why I suggest the following negative test:
{% if my_var.timezone is defined and my_var.nonExistingProperty is not defined %}
{{ my_var|date('m/d/Y') }}
{% else %}
{{ my_var }}
{% endif %}
The second case was the one I recently struggled with because of using Propel ORM objects. The base class has the __call
method that catches all Twig is defined
tests.
instanceof
operator. – Mountebank