我确实尝试了不同的方法,但没有得到正确的时间格式。
$news->created_at = Carbon::parse($news->created_at)->format('M, d, Y');
$news->created_at = date('d M Y',strtotime($news->created_at))
$news->created_at = date('d M Y',$news->created_at)
$news->created_at = Carbon::createFromFormat("d M Y",strtotime($news->created_at));
$news->created_at = $news->created_at->format('M, d, Y');
And the errors are,
发现意外数据
找不到分隔符
无效参数异常
Carbon.php: 910
dd($news->created_at);
Carbon @1550035143 {#361 ▼
date: 2019-02-13 05:19:03.0 UTC (+00:00)
}
您已经有一个 Carbon 实例$news->created_at
领域,因为 Eloquent 模型考虑created_at and updated_at作为时间戳的列 https://laravel.com/docs/5.7/eloquent#defining-models默认情况下并自动将它们转换为Carbon
实例。所以你只需要使用format https://carbon.nesbot.com/docs/#api-formatting碳的方法:
$news->created_at->format('d M Y');
但是,当您尝试将字符串重新分配为created_at
在模型实例上,它与 Laravel 的内部变元冲突,后者试图将 Carbon 实例中分配给日期字段的任何值转换为字符串。
你可以设置public $timestamps = false;
在你的News
模型,然后在处理模型时间戳时在整个应用程序中使用字符串,但这看起来更像是一种黑客而不是解决方案,因为您将放弃 Carbon 提供的所有好处。
您还可以通过在序列化时处理时间戳来做到这一点,如下所示:
return collect($news->makeHidden(['created_at']))->merge([
'created_at' => $news->created_at->format('d M Y')
]);
上面的代码将隐藏传递给的列makeHidden
从序列化过程来看。然后,您可以将隐藏列的格式化值合并到您的响应中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)