5 найпопулярніших PHP Date libraries для роботи з датами і часом

Робота з датами та часом — це частина повсякденної рутини будь-якого PHP-розробника. Десь потрібно показати дату створення статті у блозі, десь порахувати кількість робочих днів між двома подіями, а іноді й врахувати святкові дні при розрахунках графіків. У PHP є базові класи DateTime, DateInterval і DateTimeZone, але часто їх використання виглядає занадто громіздким. Саме тому спільнота створила готові бібліотеки, такі як PHP Date libraries для дат, які роблять роботу з датами набагато зручнішою.

Серед безлічі інструментів, що полегшують роботу з датами, виділяються PHP Date libraries , які використовуються програмістами по всьому світу.

У цій статті я розгляну п’ять найпопулярніших бібліотек: Carbon, Chronos, MorphyDateTime, Yasumi та Period. Поділюсь прикладами коду, розповім про переваги й недоліки кожної та підкажу, де яку краще використовувати.

PHP Carbon

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

CakePHP Chronos

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

PHP Date libraries – MorphyDateTime

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

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 League)

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

Popular PHP Date libraries for date handling

Висновок

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

Зрештою, вибір залежить від завдань конкретного проєкту. Я б рекомендував Carbon як «базову» бібліотеку, а решту додавати за потреби.

Рекомендуємо оглянути наступні статті

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *