Laravel:如何使用 Carbon 在视图中本地化日期

Seb*_*n D 6 laravel php-carbon

我正在尝试以不同的语言在视图中本地化Carbon日期,但到目前为止还没有成功。

我从模型中检索日期并将它们发送到视图:

Route::get('/tables/setup', function(){
     $now=  Date::now('Europe/Paris');

     $active_tasks = GanttTask::whereDate('start_date', '<',  $now)
        ->whereDate('end_date', '>', $now)
        ->get();

     return view('my_view', compact('active_tasks'));

   });
Run Code Online (Sandbox Code Playgroud)

并且可以轻松地在“my_view”中显示它们:

  @foreach($active_tasks as $active_task)

     {{$active_task->start_date->format('l j F Y H:i:s')}}  //Friday 26 January 2018 09:19:54

     @endforeach
Run Code Online (Sandbox Code Playgroud)

但我无法以所需的语言呈现它们。

我尝试Carbon::setLocale('it');在路线或视图中添加没有效果。

编辑: 我的刀片调用中有轻微错误,{{$active_task->start_date->format('l j F Y H:i:s')}}而不是{{$active_task->format('l j F Y H:i:s')}}

小智 10

setlocale在Carbon中设置本地化格式之前需要使用php函数。

不幸的是,基类 DateTime 没有任何本地化支持。为了开始本地化支持,添加了 formatLocalized($format) 方法。该实现使用当前实例时间戳调用 strftime 。如果您首先使用 PHP 函数 setlocale() 设置当前语言环境,则返回的字符串将被格式化为正确的语言环境。

文档中的示例:

setlocale(LC_TIME, 'German');
echo $dt->formatLocalized('%A %d %B %Y');          // Mittwoch 21 Mai 1975
setlocale(LC_TIME, '');
echo $dt->formatLocalized('%A %d %B %Y');          // Wednesday 21 May 1975
Run Code Online (Sandbox Code Playgroud)