laravel没有显示时间戳的日期部分

时间:2018-06-08 12:56:42

标签: php mysql laravel

我正在尝试将日期值插入到我的datatables实例中,但我无法正确地获得格式。

我的控制器正在引入名为'created_at'的mysql时间戳:

if( $d->created_at > $deadline){
    $d->call_status = 'new';
}

我正在转储它并返回正确的数据,并且当前在我的数据表中它会转储正确的数据,但它是一个完整的时间戳。

所以这个:

<td class="createdAt">
    @if(!is_null($this->created_at))
        {{ $this->created_at }}
    @endif
</td>

工作但返回06/12/2018 00:00:00

我只想要日期部分。但是,当我尝试这个时:

<td class="createdAt">
    @if(!is_null($this->created_at))
        {{ $this->created_at->date->format('Y-m-d') }}
    @endif
</td>

它说它不能在字符串上调用format()。

格式行适用于我的其他列,但这些是mysql DATE字段,而不是时间戳。

最佳做法是如何才能正确显示日期部分?

4 个答案:

答案 0 :(得分:1)

你可以使用mutators,试试这个: 在您的模型中创建

public function getCreatedDateAttribute(){
return date('Y-m-d',strtotime($this->created_at));
}

答案 1 :(得分:1)

如果它在模型中,您可以使用attribute casting

protected $casts = [
    'created_at' => 'date:Y-m-d',
];

或者取决于您使用它的位置。

Carbon::parse($this->created_at)->format('Y-m-d');

答案 2 :(得分:0)

尝试

{{ $this->created_at->format('Y-m-d') }}

您不应该需要它,但如果仍然是字符串,您可以更新您的模型:

protected $dates = ['created_at'];

答案 3 :(得分:0)

strtotime()将您的字符串转换为时间戳格式,因此可以尝试这样:

{{ date('Y-m-d', strtotime($this->created_at->date)) }}