在我的项目索引视图中,我将返回数据库字段,包括项目启动时。但是,sql中的日期格式只允许格式0000-00-00
,我想在d-m-Y
中查看它。
我想使用Carbon来实现这一点,因为它似乎是一个多功能的插件。但是我不知道如何让它工作,我已经将它添加到我的app.php文件中:
'Carbon' => 'Carbon/Carbon'
我正在尝试将其格式化为我的index.blade.php
@foreach ($projects as $project)
<div class="one-third column">
<ul class="data">
<li><label>Project Name: </label>{{ $project->project_name }}</li>
<li><label>Project Brief</label>{{ $project->project_brief }}</li>
$format = 'Y-m-d';
$brief = $project->brief;
<label>Created: </label><li>{{ Carbon::createFromFormat($format, $brief) }}</li>
</div>
@endforeach
但是我得到以下错误:
Method Illuminate\View\View::__toString() must not throw an exception
不确定我哪里出错了,因为我之前从未使用过它。任何人都有碳的经验可以帮助我吗?
答案 0 :(得分:5)
我想我也会添加我的答案,以防万一有人还在寻找另一种方法来做到这一点并且偶然发现这个问题。
以下是使用Carbon的format()
函数与Laravel的示例。就我而言,我正在格式化在我的一次迁移中创建的created_at Timestamp字段。
{{$project->created_at->format('m/d/Y')}}
您可以使用PHP.net上提供的日期格式: http://php.net/manual/en/function.date.php
答案 1 :(得分:1)
您尝试在Blade文件中编写PHP代码。这是行不通的,至少不是现在的样子。我认为$project
是一个模型,我是对的吗?如果是这样,并且如果brief
在数据库上定义为DATE
,则Laravel会自动将其转换为Carbon实例。然后,你可能想要的是这个:
{{ $project->brief->toDateString() }}
答案 2 :(得分:0)
在config/app.php
:
'timezone' => 'Europe/Berlin',
在你的模特中:
// Any Kind of Eloquent Model
class User extends Eloquent implements UserInterface, RemindableInterface {
public function getCreatedAtAttribute($value) { //created_at field in DB
setlocale(LC_ALL, 'German');
return $carbonDate = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $value)->formatLocalized('%A %d. %B %Y');
}
结果在视图中:
{{ $userData->created_at }}
“Mittwoch 29. Januar 2014”
<强>更新强>
然后,您可以在语言文件lang/en
中翻译日期格式,并像
..formatLocalized(trans('formats.long-date'))