在Laravel中配置日期的荷兰语格式


Configure Dutch format for date in Laravel

在我的Laravel应用程序中,希望以荷兰语格式显示日期。在我的config/app.php文件中,我设置了时区和区域设置:

'timezone' => 'Europe/Amsterdam',
'locale' => 'nl',

但如果我在刀片文件中打印这样的日期:

strftime('%a %e %b', strtotime($day->date))

它仍然没有以荷兰语格式显示。当我在相关控制器的构造函数中调用setlocale()方法时,它就起作用了。

setlocale(LC_TIME, 'NL_nl');

如何全局设置或在配置中定义?

警告

根据我的说法,你改变了laravel框架的默认配置,这是在走错误的方向。按照惯例,您不应更改/编辑默认值,除非您的应用程序是特定于国家/地区的,而不是针对整个世界的。

阅读更多关于不更改默认配置的信息(论坛的帖子仅与时区有关,但适用于所有内容)

回答

你为什么不使用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:

我不建议您使用下面提到的方法,因为您将把blade和php混合在一起,这是非常不推荐的,因为这会导致代码和应用程序的糟糕设计,即使您会得到正确的输出

可以直接在刀片文件中使用Carbon实例。只需在您的视图中添加以下代码片段。blade.file

<?php
Carbon'Carbon::setLocale('nl');
$dt = getDateAndTimeValueFromDB();
$newDt = Carbon'Carbon::parse($dt)->timezone('Europe/Amsterdam');
?>

然后在文件中的任意位置回显转换后的日期。

{{ $newDt }}

希望这能帮到你。快乐编码。干杯

尝试在configServiceProvider:中设置

public function boot() {
    App::setLocale(LC_TIME, 'NL_nl');
}