已弃用 - Laravel:如何使用 Carbon 在视图中本地化日期[重复]

问题描述 投票:0回答:2

我正在尝试以不同语言本地化视图中的 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')}}

laravel deprecated php-carbon
2个回答
9
投票

在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
投票

好的,一切都解决了。

在视图顶部:

setlocale(LC_TIME, 'IT_it');

然后刀片呼叫:

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

所有功劳都归功于@Btl

© www.soinside.com 2019 - 2024. All rights reserved.