Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 在twig中使用datediff确定日期是在给定日期之前还是之后_Symfony_Date_Twig - Fatal编程技术网

Symfony 在twig中使用datediff确定日期是在给定日期之前还是之后

Symfony 在twig中使用datediff确定日期是在给定日期之前还是之后,symfony,date,twig,Symfony,Date,Twig,我需要能够计算发票到期日期和当前日期之间的差异,以便我可以在Symfony的一个小文件中标记有关付款紧急性的适当警告消息 我实现了这里给出的解决方案: 虽然它可以工作,但它无法判断它是在到期日之前还是之后,它只计算天数的差异。因此,如果发票过期两天,它会返回2,如果两天内到期,它也会返回2,这并没有真正的帮助 这是我的密码: {% if invoice['invoice'].datePaid != null %} {{ invoice['invoice'].datePaid|date(

我需要能够计算发票到期日期和当前日期之间的差异,以便我可以在Symfony的一个小文件中标记有关付款紧急性的适当警告消息

我实现了这里给出的解决方案:

虽然它可以工作,但它无法判断它是在到期日之前还是之后,它只计算天数的差异。因此,如果发票过期两天,它会返回2,如果两天内到期,它也会返回2,这并没有真正的帮助

这是我的密码:

{% 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") }}