ICStudio
Услуги
ПортфолиоКейсы
Инструменты
ДемоБлог
ICStudio
ГлавнаяIC Studio Morning PostЛокальный формат времени в Carbon
Назад к Morning Post

Локальный формат времени в Carbon

Для тех, кто не успевает следить за всеми новшествами, которые появляются в прекрасной библиотеке Carbon, мы поделимся самым болезненным моментом, который бесит разработчиков, а именно вывод времени в локализированном виде, например 9 декабря 2021 г. Разработчик, который не особо следит на нововведениями как в PHP, так и в Carbon, может предложить вариант:

Опубликовано: 12/8/2021

Для тих, хто не встигає стежити за всіма нововведеннями, які з'являються в прекрасній бібліотеці Carbon, ми поділимося найболючішим моментом, який дратує розробників, а саме виведення часу в локалізованому вигляді, наприклад, 9 грудня 2021 року.

Розробник, який не особливо стежить за нововведеннями як у PHP, так і в Carbon, може запропонувати варіант:

php
$current_russian_time = Carbon::now()->locale('ru')->format('j F Y г.');

Однак, смію вас запевнити, що отримаєте Ви приблизно це: 9 December 2021 г.. Справа в тому, що розробники Carbon змінили підхід до поняття локалізації, перейшовши на ISO формати. Щоб отримати локазований вид дати/часу/дня тижня, потрібно використовувати такий код:

php
Carbon::setLocale('ru');
	$current_russian_time = Carbon::now()->isoFormat('D MMMM Y г.');

Отримуємо бажаний результат: 9 грудня 2021 г.

Використання Carbon::setLocale('ru'); дозволяє використовувати зовнішні ключі для передачі поточної локалі один раз для всіх тимчасових міток. В іншому випадку довелося б писати постійно: Carbon::now()->locale('ru')->isoFormat('D MMMM Y г.');

Введення в Carbon 2.x isoFormat дозволило робити цікаві дива з датою та часом, наприклад такі:

php
$date = Carbon::parse('2018-03-16')->locale('uk');
echo $date->getTranslatedDayName('[в] dddd'); // п’ятницю
// By providing a context, we're saying translate day name like in a format such as [в] dddd
// So the context itself has to be translated first consistently.
echo "\n";
echo $date->getTranslatedDayName('[наступної] dddd'); // п’ятниці
echo "\n";
echo $date->getTranslatedDayName('dddd, MMM'); // п’ятниця
echo "\n";
// The same goes for short/minified variants:
echo $date->getTranslatedShortDayName('[наступної] dd'); // пт
echo "\n";
echo $date->getTranslatedMinDayName('[наступної] ddd'); // пт
echo "\n";

// And the same goes for months
$date->locale('ru');
echo $date->getTranslatedMonthName('Do MMMM'); // марта
echo "\n";
echo $date->getTranslatedMonthName('MMMM YYYY'); // март
echo "\n";
// Short variant
echo $date->getTranslatedShortMonthName('Do MMM'); // мар
echo "\n";
echo $date->getTranslatedShortMonthName('MMM YYYY'); // мар
echo "\n";

// And so you can force a different context to get those variants:
echo $date->isoFormat('Do MMMM');        // 16-го березня
echo "\n";
echo $date->isoFormat('MMMM YYYY');      // березень 2018
echo "\n";
echo $date->isoFormat('Do MMMM', 'MMMM YYYY'); // 16-го березня
echo "\n";
echo $date->isoFormat('MMMM YYYY', 'Do MMMM'); // березня 2018
echo "\n";

Більш детально ознайомитись з фішками локалізації можна на оф. сторінці бібліотеки https://carbon.nesbot.com/docs/#api-localization

Поделиться:

Хотите работать с нами?

Обсудим ваш проект и найдём лучшее решение

Связаться с нами
ICStudio

Профессиональная веб-разработка и IT-решения для бизнеса

Быстрые ссылки

  • Главная
  • Портфолио
  • Кейсы
  • Блог
  • Команда

Resources

  • Tools
  • AI Chatbots
  • Demo
  • Docs
  • Pilot Program
  • Hire Us

Услуги

  • Web Development
  • E-commerce
  • CRM
  • Support

Контакты

  • hello@icstudio.online
  • +38 099 123 45 67
  • Kyiv, Ukraine

© 2026 IC Studio. Все права защищены.

Политика конфиденциальностиУсловия использованияService Terms