我认为我有一个相对简单的问题,我只是觉得我误解了它的一个方面。
我有一个索引页面,其中一个表格单元格中有一个if语句:
@if (Carbon\Carbon::parse($shipment->due_date)->diffInDays(false) > 0 && Carbon\Carbon::parse($shipment->due_date)->diffInDays(false) < 10)
如果那些虚假的地方我想宣布,如果将来这一天,比如明天和今天相比,我将返回-1,而如果我提到昨天,我会有1返回。
问题是我正在尝试使用文档,但无论我尝试何种方式,他们都会为我排队:http://carbon.nesbot.com/docs/#api-humandiff
但是我应该提一下,在相同的布局上,我可以这样做:
{{Carbon\Carbon::parse($shipment->due_date)->diffInDays()}}
并返回过去或将来的天数(即使两者都是正数)所以我知道上述工作(在某种程度上,但我仍然需要提到的正面或负面)。
答案 0 :(得分:5)
您需要提供碳日期作为diffInDays()
的第一个参数。所以,逻辑将是:
Carbon\Carbon::parse($shipment->due_date)->diffInDays(now(), false)
或者:
now()->diffInDays(Carbon\Carbon::parse($shipment->due_date), false)
取决于你想要达到的目的。
false
作为第二个参数使方法返回有符号值(正或负)。
答案 1 :(得分:0)
您可以使用:
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
如果您想为此类添加一些自定义方法。