Laravel 如果状态为“已完成”,则显示两个日期之间的总天数

Laravel 如果状态为“已完成”,则显示两个日期之间的总天数,laravel,date,laravel-5,php-carbon,Laravel,Date,Laravel 5,Php Carbon,我试图计算两个日期(carbon::now和$start_date)之间的天数,当status==完成天数停止计数时,则获得总天数 if ($this->status === 'COMPLETED') { $now = Carbon::now(); $start_date = Carbon::createFromFormat('Y-m-d', $this->start_date); $this->start_date_to_current_date =

我试图计算两个日期(carbon::now和$start_date)之间的天数,当status==完成天数停止计数时,则获得总天数

if ($this->status === 'COMPLETED') {
    $now = Carbon::now();
    $start_date = Carbon::createFromFormat('Y-m-d', $this->start_date);
    $this->start_date_to_current_date = $start_date->diffInDays($now, true);
}
但问题是,即使状态已完成,天数仍会继续计算,例如,总天数为3天,第二天变为4天,然后我尝试这样做:

if ($this->status == null && $this->status === 'COMPLETED') {
    $now = Carbon::now();
    $start_date = Carbon::createFromFormat('Y-m-d', $this->start_date);
    $this->start_date_to_current_date = $start_date->diffInDays($now, true);
}

但该值变为零。为什么会这样/

让它只在你还没有做的时候做,不要重复做

`if ($this->status == null && $this->status !== 'COMPLETED') {`

`$now = Carbon::now();`

`$start_date = Carbon::createFromFormat('Y-m-d', $this->start_date);`

`$this->start_date_to_current_date = $start_date->diffInDays($now, true);`

}

让它只在你还没有做的时候做,不要重复做

`if ($this->status == null && $this->status !== 'COMPLETED') {`

`$now = Carbon::now();`

`$start_date = Carbon::createFromFormat('Y-m-d', $this->start_date);`

`$this->start_date_to_current_date = $start_date->diffInDays($now, true);`

}

您需要在某处记录完整的日期,并使用它而不是
now()

例如:

if($this->status=='COMPLETED'){
$start\u date=Carbon::createFromFormat('Y-m-d',$this->start\u date);
$start_date->diffInDays($this->completed_date);//completed_date应该来自db。
}

这里的问题是,您使用的是当前日期作为完成日期,这显然每天都在变化,因此您每天都会得到不同的结果。

您需要将完成日期记录在某个位置,并使用它而不是
now()

例如:

if($this->status=='COMPLETED'){
$start\u date=Carbon::createFromFormat('Y-m-d',$this->start\u date);
$start_date->diffInDays($this->completed_date);//completed_date应该来自db。
}

这里的问题是,您使用当前日期作为完成日期,这显然每天都在变化,因此您每天都会得到不同的结果。

我不清楚您的情况,但我认为您需要的是
如果($this->status!=='COMPLETED')
我不清楚您的情况,但是我想你要找的是
if($this->status!==“COMPLETED”)
但是我怎么能把当前日期放到completion date字段中呢?我的意思是我想计算$start_date和当前日期之间的天数。我认为当状态更改为“已完成”时,需要将当前日期存储在数据库中。对我来说,找出开始日期和当前日期之间的差异是没有意义的。也许你的问题不清楚。但是我如何才能将当前日期放入“完成日期”字段?我的意思是我想计算$start_date和当前日期之间的天数。我认为当状态更改为“已完成”时,需要将当前日期存储在数据库中。对我来说,找出开始日期和当前日期之间的差异是没有意义的。也许你的问题不清楚。