Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124


Робота з датами та часом — це частина повсякденної рутини будь-якого PHP-розробника. Десь потрібно показати дату створення статті у блозі, десь порахувати кількість робочих днів між двома подіями, а іноді й врахувати святкові дні при розрахунках графіків. У PHP є базові класи DateTime, DateInterval і DateTimeZone, але часто їх використання виглядає занадто громіздким. Саме тому спільнота створила готові бібліотеки, такі як PHP Date libraries для дат, які роблять роботу з датами набагато зручнішою.
Серед безлічі інструментів, що полегшують роботу з датами, виділяються PHP Date libraries , які використовуються програмістами по всьому світу.
У цій статті я розгляну п’ять найпопулярніших бібліотек: Carbon, Chronos, MorphyDateTime, Yasumi та Period. Поділюсь прикладами коду, розповім про переваги й недоліки кожної та підкажу, де яку краще використовувати.
Carbon — це найпопулярніша бібліотека для роботи з датами в PHP. Вона побудована на стандартному DateTime, але значно розширює його можливості. Бібліотека стала настільки популярною, що Laravel інтегрував її за замовчуванням.
Плюси: простий API, велика кількість готових методів, підтримка локалізації, активна спільнота.
Мінуси: об’єкти Carbon є мутабельними (змінюваними), тому треба уважно працювати з копіями дат. У великих проєктах іноді створює «магію», яку складно відстежити.
use Carbon\Carbon;
$now = Carbon::now();
echo $now; // 2025-09-28 12:45:00
// Завтра
echo $now->copy()->addDay();
// Людський формат
echo $now->diffForHumans(); // "1 second ago"
Code language: PHP (php)Приклад вище показує, наскільки легко додати день або вивести «людський» формат. Це робить Carbon незамінним для швидких задач.
Документація: Carbon Documentation
Chronos — бібліотека від команди CakePHP, яка створена як альтернатива Carbon. Її головна ідея — іммутабельність. Тобто будь-яка операція повертає новий об’єкт, а не змінює поточний. Це зменшує ризик випадкових помилок.
Плюси: іммутабельні об’єкти, зручна робота з колекціями дат, логічний і чистий API.
Мінуси: менша популярність у порівнянні з Carbon, менше прикладів у мережі, дещо повільніший у роботі через постійне створення нових об’єктів.
use Cake\Chronos\Chronos;
$now = Chronos::now();
$tomorrow = $now->addDay();
echo $now; // 2025-09-28 12:50:00
echo $tomorrow; // 2025-09-29 12:50:00
Code language: PHP (php)Chronos стане у пригоді там, де важлива передбачуваність та відсутність «магії» зі змінами об’єктів.
Документація: Chronos Docs
Також у нас є стаття з інфографікою Порівняння Carbon і Chronos
MorphyDateTime — менш відома бібліотека, але надзвичайно корисна для локалізованих проєктів. Її особливість у тому, що вона правильно відмінює назви місяців та днів тижня у слов’янських мовах.
Плюси: правильні відмінки дат для української та інших мов, зручне API.
Мінуси: порівняно невелика спільнота, рідкі оновлення. Використовується переважно у проєктах з локалізацією.
use MorphyDateTime\MorphyDateTime;
$date = new MorphyDateTime('2025-09-28');
echo $date->format('d F Y', 'ua');
// Виведе: 28 вересня 2025
Code language: PHP (php)Якщо ви пишете блог або новинний сайт українською, ця бібліотека допоможе уникнути смішних «помилок у відмінках».
Yasumi — бібліотека для роботи з національними святами. Вона підтримує десятки країн, включаючи Україну, і дозволяє перевірити, чи є конкретна дата святковою.
Плюси: актуальні дані по багатьох країнах, зручно для HR-систем, планування графіків та бухгалтерії.
Мінуси: потребує оновлення під зміни календарів свят, іноді вимагає локальних доробок.
use Yasumi\Yasumi;
$holidays = Yasumi::create('Ukraine', 2025, 'uk_UA');
if ($holidays->isHoliday(new DateTime('2025-01-01'))) {
echo "Це свято!";
}
Code language: PHP (php)Часто використовується у фінансових чи HR-додатках, де важливо враховувати державні вихідні.
Документація: Yasumi на GitHub
Period — бібліотека від The PHP League, яка дозволяє працювати з діапазонами дат. Вона розширює стандартний DatePeriod і додає зручні методи для перевірки перетинів, об’єднання та порівняння періодів.
Плюси: зручна робота з інтервалами, відмінно підходить для бронювання, планування подій і фінансових звітів.
Мінуси: більш «нішева» бібліотека, потрібна далеко не у всіх проєктах.
use League\Period\Period;
$period = Period::fromDate('2025-01-01', '2025-01-10');
echo $period->getStartDate(); // 2025-01-01
echo $period->getEndDate(); // 2025-01-10
Code language: PHP (php)Period стане незамінною, якщо ваш проєкт пов’язаний із бронюванням чи підрахунком періодів.
Документація: Period Docs


Кожна з бібліотек має свої сильні й слабкі сторони. Carbon чудово підходить для повсякденної роботи й особливо зручний у Laravel. Chronos стане в нагоді, якщо важлива іммутабельність. MorphyDateTime потрібен для проектів з локалізацією українською чи іншими слов’янськими мовами. Yasumi — для систем, де потрібно враховувати свята. А Period — ідеальне рішення для роботи з інтервалами дат.
Зрештою, вибір залежить від завдань конкретного проєкту. Я б рекомендував Carbon як «базову» бібліотеку, а решту додавати за потреби.