在Laravel 5中查看日期

时间:2015-11-21 17:58:47

标签: php date localization laravel-5

我在Laravel处理日期本地化。以下是我在blade.php中显示日期的方法。

Publish on {{  $post->published_at->format('F j, Y') }} //Publish on November 20, 2015

我尝试了(https://github.com/jenssegers/date

use Jenssegers\Date\Date;

Date::setLocale('hr');
echo Date::now()->format('F j, Y'); //Studeni 20, 2015

困扰我的是如何在blade.php中重新格式化$post->publiched_at 以进行本地化

3 个答案:

答案 0 :(得分:1)

您可以依赖内置Carbon类的区域设置功能。<​​/ p>

在您的视图中,您可以根据需要设置区域设置

<?php \Carbon\Carbon::setLocale('hr');?>

然后你可以用所需的格式回复你的日期

{{$post->published_at->formatLocalized()}}

您可以直接在Post模型中将published_at定义为Carbon实例

protected $dates = ['published_at'];

答案 1 :(得分:1)

我通过在模型

中添加访问器解决了这个问题
use Jenssegers\Date\Date;

class Post extends Model
{
    public function getDates()
    {
        return ['published_at'];
    }

  public function getCreatedAtAttribute($date)
    {
        return new Date($date);
    }

    public function getUpdatedAtAttribute($date)
    {
        return new Date($date);
    }

   public function getPublishedAtAttribute($date)
    {
        return new Date($date);
    }   

}

并在config / app.php中设置语言环境

'locale' => 'hr',

答案 2 :(得分:0)

看看Carbon。他们提供了许多灵活的方法来解决这个问题。

// Using a String
$dtToronto = Carbon::createFromDate(2012, 1, 1, 'America/Toronto');
$carbon = new Carbon('first day of January 2008', 'America/Vancouver');

// or a DateTime
$nowInLondonTz = Carbon::now(new DateTimeZone('Europe/London'));