我想比较 2 个日期。因此,我在模板刀片中创建了这样的条件:
@if(\Carbon\Carbon::parse($contrat->date_facturation)->format('d/m/Y') < $dateNow)
<td class="danger">
{{ \Carbon\Carbon::parse($contrat->date_facturation)->format('d/m/Y') }}
</td>
@else
<td>
{{ \Carbon\Carbon::parse($contrat->date_facturation)->format('d/m/Y') }}
</td>
@endif
我的变量 $dateNow 与 $contract->date_facturation 中的值具有相同的格式
截屏 https://i.stack.imgur.com/QDr8J.png
它在日期 25/02/2018 上添加红色背景,且该日期不小于变量 $contract->date_facturation
你知道这个问题吗?
谢谢
问题是您正在尝试比较两个日期字符串。 PHP 不知道如何比较日期字符串。
Carbon::format()
返回一个字符串。您应该将日期转换为 Carbon 对象(使用解析)并使用 Carbon 的比较方法,如下所述Carbon 文档(比较) http://carbon.nesbot.com/docs/#api-comparison.
对于您的示例,您应该这样做:
// Note that for this work, $dateNow MUST be a carbon instance.
@if(\Carbon\Carbon::parse($contrat->date_facturation)->lt($dateNow))
<td class="danger">
{{ \Carbon\Carbon::parse($contrat->date_facturation)->format('d/m/Y') }}
</td>
@else
<td>
{{ \Carbon\Carbon::parse($contrat->date_facturation)->format('d/m/Y') }}
</td>
@endif
此外,您的代码看起来重复,并假设$dateNow
是一个具有当前日期的变量,您可以使用Carbon::isPast()
方法,所以重写你的代码,它变成:
@php($date_facturation = \Carbon\Carbon::parse($contrat->date_facturation))
@if ($date_facturation->isPast())
<td class="danger">
@else
<td>
@endif
{{ $date_facturation->format('d/m/Y') }}
</td>
这使得您的代码重复性更少且速度更快,因为您解析日期一次,而不是两次。
另外,如果您希望代码更好,请使用Eloquent 的日期突变器 https://laravel.com/docs/5.1/eloquent-mutators#date-mutators,因此您无需每次在视图中需要时都解析日期。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)