Laravel-4 格式化日期时碳抛向 String() 错误


Laravel-4 Carbon throwing toString() error when formatting date

在我的项目索引视图中,我返回数据库字段,包括项目何时启动。但是sql中的日期格式只允许格式0000-00-00,我想在d-m-Y中查看它。

我想使用 Carbon 来实现这一点,因为它似乎是一个多功能插件。但是我不确定如何让它工作,我已将其添加到我的应用程序.php文件中,如下所示:

'Carbon' => 'Carbon/Carbon'

我正在尝试在我的索引中将其格式化为.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

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

我想

我也会添加我的答案,以防万一有人仍在寻找另一种方法来做到这一点并偶然发现了这个 SO。

以下是将 Carbon format() 函数与 Aravel 一起使用的示例。 就我而言,我正在格式化在一次迁移中创建的created_at时间戳字段。

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

您可以使用 PHP.net 中提供的日期格式:http://php.net/manual/en/function.date.php

您尝试在 Blade 文件中编写 PHP 代码。这是行不通的,至少不是现在这样。我想$project是一个模特,对吗?如果是这样,并且brief被定义为数据库上的DATE,Laravel会自动将其转换为Carbon实例。然后,您可能想要的是:

{{ $project->brief->toDateString() }}

在你的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 }}

"米特沃奇 29.2014年1月"

更新然后,您可以在语言文件中翻译日期格式lang/en并使用它们,例如

..formatLocalized(trans('formats.long-date'))