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)
如何全局设置或在我的配置中定义它?
警告:
据我所知,更改 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)
希望这可以帮助你。快乐编码。干杯。
| 归档时间: |
|
| 查看次数: |
6325 次 |
| 最近记录: |