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