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

时间:2018-01-26 14:14:32

标签: 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'));

   });

可以在'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

但我无法用所需的语言渲染它们。

我尝试在路线或视图中添加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')}}

出现轻微错误

2 个答案:

答案 0 :(得分:2)

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

  

不幸的是,基类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

答案 1 :(得分:0)

好的,一切都已修复。

在视图的顶部:

setlocale(LC_TIME, 'IT_it');

然后是刀片电话:

{{$active_task->start_date->formatLocalized('%A %d %B %Y')}}

@Btl的所有学分