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

kip*_*zes 5 php date setlocale laravel-5.1

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

'timezone' => 'Europe/Amsterdam',
'locale' => 'nl',
Run Code Online (Sandbox Code Playgroud)

但是如果我在我的刀片文件中打印一个日期,如下所示:

strftime('%a %e %b', strtotime($day->date))
Run Code Online (Sandbox Code Playgroud)

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

setlocale(LC_TIME, 'NL_nl');
Run Code Online (Sandbox Code Playgroud)

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

Sai*_*nce 4

警告

据我所知,更改 laravel 框架的默认配置是走错了方向。正如惯例所说,您不应更改/编辑默认值,除非您的应用程序是特定于国家/地区的而不是面向全世界的。

阅读有关不更改默认配置的更多信息(论坛帖子仅与时区相关,但适用于一般情况)

回答

你为什么不使用

将时间存储为 laravel 照常执行的操作,然后在刀片/控制器中更改时区和区域设置并显示它。

方法一:

您需要执行以下操作:

在控制器中导入 Carbon 命名空间

use Carbon\Carbon;
Run Code Online (Sandbox Code Playgroud)

然后在你的方法中:

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'));
}
Run Code Online (Sandbox Code Playgroud)

然后在视图文件中的任意位置添加以下内容。

{{ $newDt }}
Run Code Online (Sandbox Code Playgroud)

应该可以做到这一点。


方法二:

我不建议你使用这个 - 下面提到的方法 - 因为你将把blade和php混合在一起,这是强烈不推荐的,因为这会导致你的代码和应用程​​序的设计不好,即使你会得到正确的输出。

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

<?php
Carbon\Carbon::setLocale('nl');
$dt = getDateAndTimeValueFromDB();
$newDt = Carbon\Carbon::parse($dt)->timezone('Europe/Amsterdam');
?>
Run Code Online (Sandbox Code Playgroud)

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

{{ $newDt }}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助你。快乐编码。干杯。