Дата Carbon на русском языке
Вывод даты страницы или сообщения в блоге на русском языке — типовая задача практически любого сайта Рунета. Конечно, всегда есть возможность ограничиться отображением даты в формате типа 2018/03/24, но такое решение устроит далеко не всех. Тем более, что в Laravel задача отображения даты по-русски элегантно решается с помощью сторонней библиотеки jenssegers/date. В итоге, команда {{ Date::parse($post->created_at)->format('j F Y г.') }}
в blade-шаблоне выведет форматированную дату, типа «25 октября 2018 г.».
Библиотека Carbon
Библиотека Carbon — простое расширение встроенного в PHP класса DateTime и мощный инструмент для разнообразных манипуляций с датой и временем. Библиотека поддерживает методы для генерации даты из строки, прибавления и отнимания временных промежутков и вывода даты в произвольном формате.
В Laravel поддержка библиотеки Carbon устроена таким образом, что по-умолчанию временные параметры моделей, типа created_at и updated_at, являются сущностями библиотеки. Это означает, что для отображения даты создания пользователя модели User достаточно применить один из методов библиотеки, например toFormattedDateString:
use Carbon\Carbon;
echo $user->created_at->toFormattedDateString();
Вот еще несколько примеров использования библиотеки.
use Carbon\Carbon;
echo Carbon::now()->format('l j F Y H:i:s');
echo Carbon::create(2001, 4, 21, 12)->diffForHumans();
echo Carbon::createFromTimestamp('1538599382')->format('Y/m/d');
Встречайте jenssegers/date
Единственная загвоздка в применении библиотеки Carbon для русскоязычных сайтов — это поддержка русского языка. На текущий момент в Carbon русифицированы лишь отдельные методы.
К счастью, для вывода даты на русском языке в Laravel можно воспользоваться дополнительной библиотекой jenssegers/date, разработанной энтузиастом Laravel и опытным веб-разработчиком Дженсом Сегерсом. Спрограммированное им расширение библиотеки Carbon как раз добавляет поддержку локализации и позволяет использовать на разных языках методы format, diffForHumans, parse, createFromFormat и timespan.
Алгоритм русификации
Давайте разберем, как настроить этот функционал.
1. Установить библиотеку с помощью команды в консоли:
composer require jenssegers/date
2. Установить для параметра locale в файле config/app.php значение "ru", т.е. русский язык:
'locale' => 'ru',
3. Добавить в метод boot в PHP-классе app\Providers\AppServiceProvider.php автозагрузку библиотеки jenssegers/date:
use Jenssegers\Date\Date;
public function boot()
{
Date::setlocale(config('app.locale'));
}
4. Использовать библиотеку jenssegers/date для вывода даты в blade-шаблоне:
{{ Date::parse($post->created_at)->format('j F Y г.') }}
Должно вывести что-то типа "25 октября 2018 г.".