laravel Carbon计算死亡年龄(直到现在)

时间:2018-05-30 16:14:46

标签: laravel php-carbon

到现在为止年龄()可以使用下面的代码

// Accessor for Age.
public function getAgeAttribute()
{
    return Carbon::parse($this->attributes['birth_date'])->age;
}

但如果这个人死了怎么办?

在数据库[death_date]字段中存储null或yyyy-mm-dd

那么如何计算出生日期〜死亡日期之间的年龄

// Accessor for Age.
public function getAgeAttribute()
{
    if (!is_null($this->attributes['death_date']))
    {
        // how to calculate death_date - birth_date = realAge
        return $realAge;
    }

    return Carbon::parse($this->attributes['birth_date'])->age;
}

以防万一有人查看此帖子,这是我的回答

// Accessor for Age.
public function getAgeAttribute()
{
    // return is_null($this->attributes['death_date'])
    //     ? Carbon::parse($this->attributes['birth_date'])->age
    //     : Carbon::parse($this->attributes['birth_date'])->diff(Carbon::parse($this->attributes['death_date']))->format('%y');

    // oh, Carbon will auto convert NULL to now(), so no need the upper code
    return Carbon::parse($this->attributes['birth_date'])->diff(Carbon::parse($this->attributes['death_date']))->format('%y');
}

3 个答案:

答案 0 :(得分:1)

您可以按以下方式解决:

public function getAgeAttribute()
 {
 if (!is_null($this->attributes['death_date']))
 {
     $realAge = Carbon::parse($this->attributes['death_date'])->diff(Carbon::parse($this->attributes['birth_date']))->format('%y');
      return $realAge
  }

 return Carbon::parse($this->attributes['birth_date'])->age;
}

答案 1 :(得分:0)

$birth_date = Carbon::parse($this->attributes['birth_date']);
$death_date = Carbon::parse($this->attributes['death_date']);

echo $birth_date->diffInYears($death_date);  

答案 2 :(得分:0)

假设您正在寻找多年的年龄,请尝试以下方法:

$birth = new Carbon($this->attributes['birth_date']);
$death = new Carbon($this->attributes['death_date']);

$age = $birth->diffInYears($death); // Returns Integer