Laravel:显示时间戳字段的个人格式

4
在我的项目中,我使用了以下代码来格式化时间戳字段。
date('D m Y  H:i', strtotime($post->created_at))

但是因为我有很多地方和领域需要展示,所以这有点无聊,如果我需要更改格式,那么维护起来也不容易。

我想知道是否有一种方法可以声明输出格式。


创建一个变量 $format = 'D m Y H:i'; 然后将该变量保存在一个帮助类中,命名空间并自动加载该类,然后您就可以使用 helper->format。 - Arthur BALAGNE
1个回答

9
您可以在您的文章模型中创建一个访问器函数。
public function getCreatedAtAttribute($value)
{
    return date('D m Y H:i', strtotime($value));
}

这样,每次调用$post->created_at时,它将显示你的访问器返回的日期,而不是默认值。
更多信息请参见:http://laravel.com/docs/eloquent#accessors-and-mutators 如果您不想在所有模型中使用此函数,则可以创建一个BaseModel类,并使您的模型扩展此BaseModel类。
我还发现了另一种解决方法:
\Carbon\Carbon::setToStringFormat('D m Y H:i');

您可以使用这行代码(例如在global.php中),但它将更改整个应用程序的日期格式。

谢谢,这是一个开始,但我正在寻找更通用的方法。在我的项目中有很多时间戳字段,如果每个字段都这样做可能会变得冗长和无聊 :) - Lolo
完美。谢谢,这正是我正在寻找的解决方案。在您编辑评论之前,我还重新制作了我的模型,现在它们继承自我的ModelBase。我使用了您编写的访问器,但我使用了变异器并添加了=>format('xxxx')。但是您的新解决方案是完美的 :) - Lolo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接