Laravel 和 Carbon - DiffInDays If 语句
Laravel and Carbon - DiffInDays If Statement
我想我有一个相对简单的问题,我只是觉得我误解了它的一个方面。
我有一个索引页,其中 table 个单元格中有一个 if 语句:
@if (Carbon\Carbon::parse($shipment->due_date)->diffInDays(false) > 0 && Carbon\Carbon::parse($shipment->due_date)->diffInDays(false) < 10)
错误的地方是我想声明的地方,如果那一天是未来,比如说明天与今天相比,我将得到 -1 returned,而如果我指的是昨天,我将有 1 returned.
问题是我正在尝试使用这些文档,但无论我以何种方式尝试它们,它们都在为我排队:http://carbon.nesbot.com/docs/#api-humandiff
但是我应该提到,在相同的布局上我可以这样做:
{{Carbon\Carbon::parse($shipment->due_date)->diffInDays()}}
和 return 过去或未来的天数(即使两者都是正数)所以我知道上面的工作原理(在某种程度上,但我仍然需要提到正数或负数)。
您需要提供 Carbon 日期作为 diffInDays()
的第一个参数。因此,逻辑将是:
Carbon\Carbon::parse($shipment->due_date)->diffInDays(now(), false)
或者:
now()->diffInDays(Carbon\Carbon::parse($shipment->due_date), false)
取决于您要实现的目标。
false
作为第二个参数使方法 return 有符号值(正或负)。
您可以使用:
Carbon\Carbon::parse($shipment->due_date)->diffInDays(null, false)
代替
Carbon\Carbon::parse($shipment->due_date)->diffInDays(false)
这是因为方法签名如下所示:
public function diffInDays(Carbon $dt = null, $abs = true)
{
$dt = $dt ?: static::now($this->getTimezone());
return (int) $this->diff($dt, $abs)->format('%r%a');
}
另外看你的逻辑我觉得太复杂了。我认为使用就足够了:
@if (Carbon\Carbon::parse($shipment->due_date)->diffInDays(null, false) < 10)
我认为第一个条件不是必须的
此外,如果您使用 Laravel 5.5,您应该使用:
Illuminate\Support\Carbon
而不是
Carbon\Carbon
以防您想为此添加一些自定义方法 class。
我想我有一个相对简单的问题,我只是觉得我误解了它的一个方面。
我有一个索引页,其中 table 个单元格中有一个 if 语句:
@if (Carbon\Carbon::parse($shipment->due_date)->diffInDays(false) > 0 && Carbon\Carbon::parse($shipment->due_date)->diffInDays(false) < 10)
错误的地方是我想声明的地方,如果那一天是未来,比如说明天与今天相比,我将得到 -1 returned,而如果我指的是昨天,我将有 1 returned.
问题是我正在尝试使用这些文档,但无论我以何种方式尝试它们,它们都在为我排队:http://carbon.nesbot.com/docs/#api-humandiff
但是我应该提到,在相同的布局上我可以这样做:
{{Carbon\Carbon::parse($shipment->due_date)->diffInDays()}}
和 return 过去或未来的天数(即使两者都是正数)所以我知道上面的工作原理(在某种程度上,但我仍然需要提到正数或负数)。
您需要提供 Carbon 日期作为 diffInDays()
的第一个参数。因此,逻辑将是:
Carbon\Carbon::parse($shipment->due_date)->diffInDays(now(), false)
或者:
now()->diffInDays(Carbon\Carbon::parse($shipment->due_date), false)
取决于您要实现的目标。
false
作为第二个参数使方法 return 有符号值(正或负)。
您可以使用:
Carbon\Carbon::parse($shipment->due_date)->diffInDays(null, false)
代替
Carbon\Carbon::parse($shipment->due_date)->diffInDays(false)
这是因为方法签名如下所示:
public function diffInDays(Carbon $dt = null, $abs = true)
{
$dt = $dt ?: static::now($this->getTimezone());
return (int) $this->diff($dt, $abs)->format('%r%a');
}
另外看你的逻辑我觉得太复杂了。我认为使用就足够了:
@if (Carbon\Carbon::parse($shipment->due_date)->diffInDays(null, false) < 10)
我认为第一个条件不是必须的
此外,如果您使用 Laravel 5.5,您应该使用:
Illuminate\Support\Carbon
而不是
Carbon\Carbon
以防您想为此添加一些自定义方法 class。