Настроить голландский формат для даты в 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');
}
Другие вопросы по тегам