【问题标题】:Symfony2 DATEDIFF functionSymfony2 DATEDIFF 函数
【发布时间】:2014-10-28 10:44:13
【问题描述】:

我需要用数据库中的数据填充 TWIG 中的表。一切都很好,除了这个:

我需要具有 DATEDIFF 属性的列来获取天数。

TODAY-dateFromDateBase

问题是: 如何获取树枝中循环的天数?

这是我的树枝:

<table>
            <thead>
            <tr>
                <form action="" method="post" {{ form_enctype(searchform) }} class="form-index-permits">
                    <td>L.p </td>
                    <td>ID PRZEPUSTKI {{ form_widget(searchform.PermitId) }}</td>
                    <td>Name{{ form_widget(searchform.Permitname) }}</td>
                    <td>Surname {{ form_widget(searchform.Permitsurname) }}</td>
                    <td>Company {{ form_widget(searchform.Company) }}</td>
                    <td>GW {{ form_widget(searchform.Contractor) }}</td>
                    <td>Dayleft {{ form_widget(searchform.Dayleft) }}</td>
                    <td>End date {{ form_widget(searchform.date, { 'attr': {'class': 'datepicker'} }) }}</td>

                </form>
            </tr>

            </thead>
            {% for permit in permitcollection %}
                <tbody>
                <td>{{ loop.index }}</td>
                <td>{{ permit.getPermitid()|number_format(0, '.', ' ') }}</td>
                <td>{{ permit.getPermitname() }}</td>
                <td>{{ permit.getPermitsurname() }}</td>
                <td>{{ permit.getPermitsCompany().getName() }}</td>
                <td>{{ permit.getPermitsContractor().getName() }}</td>
                <td> HERE I WANT TO DISPLAY DAYS LEFT</td>
                <td>{{ permit.getExpirationdate()|date('Y-m-d') }}</td>

                </tbody>
            {% endfor %}
        </table>

这样的事情可能吗?

{{ permit.getExpirationdate()|date('Y-m-d') - "now"|date('Y-m-d')  }}

【问题讨论】:

  • 我发现Carbon PHP library 非常有用。我建议您查看this part of the doc 并将其公开为树枝扩展。希望对您有所帮助
  • 你不能在控制器中计算并添加到你的视图模型中吗?

标签: php symfony twig datediff


【解决方案1】:

第一个解决方案(推荐)“使用现有库”:

您可以使用KnpTimeBundle

在树枝中: 这与当前日期比较:

{# Returns something like "3 minutes ago" #}
{{ time_diff(permit.expirationDate) }}

这与另一个日期比较:

{# Returns something like "3 minutes ago" #}
{{ time_diff(permit.expirationDate, anotherDate) }}

第二个解决方案“自己动手”:

通过php函数制作差异:

$calcFrom = permit.getExpirationdate()

$now = new \DateTime('now');
$now->diff($calcFrom)->format("%a")

并通过Twig extension 或直接在实体中的辅助方法中使其可用。

另一种可能的解决方案是写一个custom DQL Function在存储库中完成工作

希望有帮助

【讨论】:

  • 这样的事情可能吗?{{ permit.getExpirationdate()|date('Y-m-d') - "now"|date('Y-m-d') }}
  • 没有New Bundle还有其他方法吗?;/\
  • 如果你想自己实现,查看knp-time-bundle的源码。我建议你使用这个包,它由 symfony 框架本身的顶级开发人员编写、测试和维护得很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 2015-10-11
  • 1970-01-01
  • 2021-11-15
  • 2011-06-04
  • 2021-12-30
  • 2020-06-20
相关资源
最近更新 更多