在我的Laravel应用程序中想要以荷兰语格式显示日期。在我的config / app.php文件中,我将时区和语言环境都设置为:
'timezone' => 'Europe/Amsterdam',
'locale' => 'nl',
但是如果我在我的刀片文件中打印一个日期:
strftime('%a %e %b', strtotime($day->date))
它仍然没有以荷兰语格式显示。当我在相关控制器的构造函数中调用setlocale()方法时,它可以工作。
setlocale(LC_TIME, 'NL_nl');
如何全局设置或在我的配置中定义?
答案 0 :(得分:3)
警告强>:
据我所知,你正在改变laravel框架的默认配置。正如大会所说你不应该改变/编辑默认值,除非你的应用程序是针对特定国家的,而不是针对整个世界。
Read more about not changing the default configurations(论坛帖子仅与时区相关,但适用于所有内容)
<强>答案强>
为什么不使用Carbon?
将时间存储为laravel将照常执行的操作,然后在刀片/控制器中,更改时区和区域设置并显示它。
方法1:
这是您需要做的事情:
在控制器中导入Carbon命名空间
use Carbon\Carbon;
然后在你的方法中:
public function yourMethodName()
{
// replace getDateAndTimeValueFromDB() with whatever
// you are using or whatever your logic is...
$dt = getDateAndTimeValueFromDB();
Carbon::setLocale('nl');
$newDt = Carbon::parse($dt)->timezone('Europe/Amsterdam');
return view('path.to.your_view_file', compact('newDt'));
}
然后在您的视图文件中,在任意位置添加以下内容。
{{ $newDt }}
应该这样做。
方法2:
我不建议您使用此方法 - 下面提到的方法 - 因为您将把刀片和php混合在一起,这是非常不推荐的,因为这会导致代码和应用程序的设计不良,即使你会得到正确的输出。
您可以直接在刀片文件中使用Carbon
实例。
只需在view.blade.file
<?php
Carbon\Carbon::setLocale('nl');
$dt = getDateAndTimeValueFromDB();
$newDt = Carbon\Carbon::parse($dt)->timezone('Europe/Amsterdam');
?>
然后在您的文件中随处回复转换日期。
{{ $newDt }}
希望这会帮助你。快乐的编码。欢呼声。
答案 1 :(得分:0)
尝试在configServiceProvider
:
public function boot() {
App::setLocale(LC_TIME, 'NL_nl');
}