Настройте голландский формат даты в Laravel

В моем приложении Laravel нужно отображать дату в голландском формате. В моем файле config/app.php у меня установлены часовой пояс и локаль:

'timezone' => 'Europe/Amsterdam',
'locale' => 'nl',

Но если я напечатаю дату в своем файле блейда следующим образом:

strftime('%a %e %b', strtotime($day->date))

Он до сих пор не показан в голландском формате. Это работает, когда я вызываю метод setlocale() в конструкторе соответствующего контроллера.

setlocale(LC_TIME, 'NL_nl');

Как я могу установить это глобально или определить это в моей конфигурации?


person kipzes    schedule 18.12.2015    source источник


Ответы (2)


ВНИМАНИЕ:

По моему мнению, вы идете в неправильном направлении, изменяя стандартную конфигурацию laravel framework. Согласно соглашению, вы не должны изменять/редактировать значения по умолчанию, если только ваше приложение не предназначено для конкретной страны, а не для всего мира.

Подробнее о том, как не изменять настройки по умолчанию (сообщение на форуме относится только к часовому поясу, но относится ко всему в целом)

Ответить

Почему вы не используете Carbon?

Храните время как обычно, а затем в блейде/контроллере измените часовой пояс и локаль и отобразите его.

Способ 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 }}

Надеюсь, что это помогает вам. Удачного кодирования. Ваше здоровье.

person Saiyan Prince    schedule 19.12.2015
comment
Согласно документации Carbon, мне все еще нужно использовать setLocale для отображения в голландском формате carbon.nesbot .com/docs/#api-localization - person kipzes; 06.01.2016

Попробуйте установить его в configServiceProvider:

public function boot() {
    App::setLocale(LC_TIME, 'NL_nl');
}
person Franco    schedule 18.12.2015