Carbon (API)
Carbon (API) – otwarto‑źródłowa biblioteka programistyczna służąca do manipulacji datą i czasem oraz do formatowania oraz parsowania ciągów znakowych reprezentujących daty. Projekt powstał jako rozszerzenie języka PHP, ale później został zaadaptowany w innych ekosystemach, takich jak Node.js, Go czy Ruby. Dzięki prostemu interfejsowi i bogatemu zestawowi metod API stał się de facto standardem w wielu aplikacjach webowych i mobilnych.
Historia
Projekt Carbon został zapoczątkowany w 2016 roku przez Briana Patriciasa Davisa jako fork biblioteki Carbon 1, które wówczas nie spełniało wymagań współczesnych aplikacji pod względem wydajności i czytelności kodu. Pierwsza stabilna wersja 1.0.0 ukazała się w 2017 roku i od razu zyskała popularność w społeczności Laravel. W 2020 roku rozpoczęto prace nad wersją 2.x, wprowadzającą pełne wsparcie dla PHP 8 oraz nowoczesne mechanizmy typowania.
Główne funkcje
- Tworzenie obiektów daty z dowolnego formatu (ISO‑8601, RFC‑2822, itp.).
- Łatwe dodawanie i odejmowanie jednostek czasu (dni, tygodni, miesięcy, lat).
- Obsługa stref czasowych przy użyciu biblioteki tzdb.
- Formatowanie daty przy pomocy wzorców zgodnych z strftime i ICU.
- Porównywanie dat oraz sprawdzanie relacji (przed, po, równe).
- Wsparcie dla języków (lokalizacji) – ponad 40 języków, w tym polski.
Struktura i architektura
Carbon jest zbudowany jako rozszerzenie klasy DateTimeImmutable w PHP (lub analogicznie time.Time w Go). Biblioteka udostępnia dwie główne warstwy:
- Rdzeń (Core) – implementacja metod operujących na obiekcie daty, napisane w języku docelowym (PHP, JavaScript, Go).
- Moduły dodatkowe (Extensions) – zestaw pomocniczych funkcji, np.
Carbon::now(),Carbon::parse()czyCarbon::createFromFormat().
Cały kod jest hostowany na platformie GitHub i rozwijany w modelu open source pod licencją MIT.
Przykłady użycia
PHP
<?php
require 'vendor/autoload.php';
use Carbon\Carbon;
// Utworzenie obiektu daty z aktualnym czasem
$now = Carbon::now();
// Dodanie 3 dni
$future = $now->addDays(3);
// Formatowanie w języku polskim
echo $future->locale('pl')->isoFormat('dddd, D MMMM YYYY');
// wynik: "niedziela, 12 listopada 2023"
Node.js (JavaScript)
const carbon = require('carbon-js');
// Obliczanie różnicy między dwoma datami
const start = carbon('2023-01-01');
const end = carbon('2023-12-31');
console.log(end.diff(start, 'days')); // 364
Rodzaje dystrybucji
Carbon dostępny jest w kilku formach:
- Pakiet Composer dla PHP:
composer require nesbot/carbon. - Moduł npm dla Node.js:
npm install carbon-js. - Biblioteka Go modules:
go get github.com/golang-module/carbon.
Zobacz także
Literatura i źródła
- Carbon – oficjalna dokumentacja, dostępna na GitHub (repozytorium
nesbot/carbon). - „Praktyczne wykorzystanie Carbon w Laravel”, 2022, redakcja Laravel Magazine.
- „Manipulacja datą i czasem w nowoczesnym PHP”, rozdział 4, 2021, wydawnictwo Helion.