В моем приложении Laravel хотите отобразить дату в голландском формате. В моем файле config / app.php мой часовой пояс и локаль установлены:
'timezone' => 'Europe/Amsterdam',
'locale' => 'nl',
Но если я напечатаю дату в моем блейд-файле так:
strftime('%a %e %b', strtotime($day->date))
Это все еще не показано в голландском формате. Это работает, когда я вызываю метод setlocale () в конструкторе соответствующего контроллера.
setlocale(LC_TIME, 'NL_nl');
Как я могу установить это глобально или определить это в моей конфигурации?
ПРЕДУПРЕЖДЕНИЕ:
По моему мнению, вы идете в неправильном направлении, изменяя стандартную конфигурацию платформы laravel. Как гласит конвенция, Вы не должны изменять / редактировать значения по умолчанию если ваша заявка не относится к конкретной стране, а не для всего мира.
Узнайте больше о том, как не изменять настройки по умолчанию (сообщение на форуме относится только к часовому поясу, но относится ко всему в целом)
Ответ
Почему вы не используете углерод ?
Сохраните время, как обычно делает 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
Экземпляр прямо в блейд-файле.
Просто добавьте следующий фрагмент кода в ваш view.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');
}