格式化日期时,Laravel-4碳抛出toString()错误

时间:2013-11-16 18:15:16

标签: php laravel-4 date-formatting

在我的项目索引视图中,我将返回数据库字段,包括项目启动时。但是,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

不确定我哪里出错了,因为我之前从未使用过它。任何人都有碳的经验可以帮助我吗?

3 个答案:

答案 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'))