【问题标题】:Laravel 5 date Format valueLaravel 5 日期格式值
【发布时间】:2021-05-14 22:49:30
【问题描述】:

我想知道为什么我的代码不起作用。 我有我的模型 Organigramme 我想用函数计算两个日期之间的年龄:

public function getAncienneteAttribute()
{
    $now = Carbon::now();

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

        return $now->diffInYears($date_dentree);

}

但我遇到了这个错误:数据丢失 有人可以帮助我。

【问题讨论】:

  • 错误出现在哪一行?
  • 我怀疑它出现在$date_dentree = Carbon::createFromFormat('d/m/Y', $this->date_dentree);,你确定$this->date_dentree 是/d/m/Y 格式吗?
  • 我添加了关于您的问题的答案。另一方面,我advise you not to use Accessors,它们的设计很糟糕,导致代码难以理解。你可以在你的模型中创建一个自定义(getter)函数,比如getAnciennete,然后在你的模型对象上像->getAnciennete()一样调用它,没有魔法代码。

标签: laravel date format missing-data


【解决方案1】:

您的$this->date_dentree 格式与您传递给Carbon::createFromFormat 的格式不匹配,这可能是默认格式,请尝试以下代码:

public function getAncienneteAttribute()
{
    $now = Carbon::now();
    return $now->diffInYears(new Carbon($this->date_dentree));
}

【讨论】:

    【解决方案2】:

    试试这个

    $date_dentree = \Carbon\Carbon::createFromFormat('Y-m-d', $this->date_dentree);
    $diffYears = \Carbon\Carbon::now()->diffInYears($date_dentree );
    
    //\Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $request->date)->format('Y-m-d')
    
    $dbDate = \Carbon\Carbon::parse('2020-05-10');
    $diffYears = \Carbon\Carbon::now()->diffInYears($dbDate);
    

    【讨论】:

    • 您好团队,问题是我的 date_dentree 列中有一个空值。我已经改变了,一切都很好。所以,这段代码 public function getAncienneteAttribute() { $now = Carbon::now(); $date_dentree = Carbon::createFromFormat('d/m/Y', $this->date_dentree);返回 $now->diffInYears($date_dentree); } 为我工作。谢谢大家
    猜你喜欢
    • 2018-03-16
    • 2016-09-05
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多