Symfony 在twig中使用datediff确定日期是在给定日期之前还是之后
我需要能够计算发票到期日期和当前日期之间的差异,以便我可以在Symfony的一个小文件中标记有关付款紧急性的适当警告消息 我实现了这里给出的解决方案: 虽然它可以工作,但它无法判断它是在到期日之前还是之后,它只计算天数的差异。因此,如果发票过期两天,它会返回2,如果两天内到期,它也会返回2,这并没有真正的帮助 这是我的密码:Symfony 在twig中使用datediff确定日期是在给定日期之前还是之后,symfony,date,twig,Symfony,Date,Twig,我需要能够计算发票到期日期和当前日期之间的差异,以便我可以在Symfony的一个小文件中标记有关付款紧急性的适当警告消息 我实现了这里给出的解决方案: 虽然它可以工作,但它无法判断它是在到期日之前还是之后,它只计算天数的差异。因此,如果发票过期两天,它会返回2,如果两天内到期,它也会返回2,这并没有真正的帮助 这是我的密码: {% if invoice['invoice'].datePaid != null %} {{ invoice['invoice'].datePaid|date(
{% if invoice['invoice'].datePaid != null %}
{{ invoice['invoice'].datePaid|date('d/m/Y') }}
{% else %}
{% set difference = date(invoice['invoice'].dateDue).diff(date('now')) %}
{% set leftDays = difference.days %}
{% if date(invoice.['invoice'].dateDue) < date|('now') %}
<span class="overdue">Overdue</span>
{% elseif leftDays < 3 and leftDays > 0 %}
<span class="unpaid">Due in {{ leftDays }} day(s)</span>
{% else %}
<span class="unpaid">Unpaid</span>
{% endif %}
{% endif %}
{%if发票['invoice'].datepayed!=null%}
{{发票['invoice'].日期付款|日期('d/m/Y')}
{%else%}
{%set difference=date(发票['invoice'].dateDue).diff(日期('now'))%}
{%set leftDays=difference.days%}
{%if日期(发票。['invoice'].dateDue)0%}
在{{leftDays}}天内到期
{%else%}
不付报酬的
{%endif%}
{%endif%}
如您所见,我使用{%if-date(invoice.'invoice'].dateDue)
尝试查看到期日是否在过去,但我得到以下错误:
预期的名称或号码
然而,我尝试设置日期的格式时,这种情况发生了。我怎么才能准确地使用此计算,因为我甚至不确定错误的含义是什么?您有语法错误。这:
invoice.['invoice'].datePaid
有一个额外的点。应该是:
invoice['invoice'].datePaid
{# or #}
invoice.invoice.datePaid
该错误意味着,由于您可以使用点符号访问数组/对象值,Twig希望一个句点后面跟一个名称(数组键;例如myArray.someKey
)或一个数字(数组索引;例如myArray.2
)。但是现在您有了一个[
,当使用点表示法时,它不是有效字符
(此外,您的细枝代码非常复杂,这类事情可能更好地完成,例如在控制器中,如已建议的@LBA)。如果未提供参数,则返回当前日期,因此您可以使用:
{% if date(invoice['invoice'].dateDue) < date() %}
你确定要在twig模板中执行此操作吗?对我来说,这听起来像是某种逻辑,在服务中更好。这也会引发错误“预期的名称或数字”。请参阅我的答案。@martias你是对的,还有一个语法错误
{{ "now"|date("m/d/Y") }}