encyklopedia.space

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:

  1. Rdzeń (Core) – implementacja metod operujących na obiekcie daty, napisane w języku docelowym (PHP, JavaScript, Go).
  2. Moduły dodatkowe (Extensions) – zestaw pomocniczych funkcji, np. Carbon::now(), Carbon::parse() czy Carbon::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

  1. Carbon – oficjalna dokumentacja, dostępna na GitHub (repozytorium nesbot/carbon).
  2. „Praktyczne wykorzystanie Carbon w Laravel”, 2022, redakcja Laravel Magazine.
  3. „Manipulacja datą i czasem w nowoczesnym PHP”, rozdział 4, 2021, wydawnictwo Helion.