Menu
Olek Kaim
  • PHP
  • Laravel
  • O mnie
  • Inne
Olek Kaim
Carbon biblioteka do operacji z czasem. Carbon library

Carbon – intuicyjna biblioteka PHP

Napisano dnia 3 listopada 20183 listopada 2018
Spis treści
1) Niezwykle przydatna biblioteka do operacji na czasie
2) Carbon – oszczędź czas pracując z czasem
3) Podobne biblioteki do Carbona
4) Podsumowanie
5) Użyte źródła wiedzy

Niezwykle przydatna biblioteka do operacji na czasie

W tym wpisie postaram się przeanalizować, czym jest biblioteka Carbon, dlaczego jest przydatna, jakie ma funkcje i czym się odróżnia na tle pozostałych bibliotek.

Carbon – oszczędź czas pracując z czasem

Biblioteka Carbon powstała w  2012 roku i rozszerza wbudowaną w PHP klasę DateTime.

Ogrom aplikacji napisanych w PHP operuje czasem. Carbon udostępnia wiele intuicyjnych metod. Na przykład: 

$firstDate = Carbon::now();
$secondDate = Carbon::now()->add('day', 5);

echo $secondDate ->diffInDays($firstDate); //różnica w dniach. Zwróci 5
echo $secondDate ->diffInHours($firstDate); //różnica w godzinach. Zwróci 120

Wyżej widać, jak prosty w użyciu jest sam Carbon. Atutem tej biblioteki są liczne usprawnienia i funkcje. Poniżej przykłady wraz z zastosowaniem.

Obsługuje 64 języki wyświetlania formatu daty, dni, miesięcy

$date = Carbon::now();
var_dump($date->locale('pl')->dayName); //sobota

Kodowanie i dekodowanie instancji Carbona w JSON

$date = Carbon::now();
echo json_encode($date); //"2018-11-03T20:21:54.663136Z"

$json = '"2018-11-03T20:21:54.663136Z"';
$secondDate = Carbon::__set_state(json_decode($json, true));
echo $secondDate; //2018-11-03 20:21:54

Różnorodne formaty dat

$date = Carbon::now();
...
$date->toArray();
$date->toISOString();
$date->toJSON();
$date->toObject();
...

Porównywanie dat

$firstDate = Carbon::now();
$secondDate = Carbon::now()->add('day', 5);

var_dump($firstDate->equalTo($secondDate));     // false
var_dump($firstDate->lessThan($secondDate));    // true
var_dump($firstDate->greaterThan($secondDate)); // false
var_dump($firstDate->isAfter($secondDate));     // false
var_dump($firstDate->isBefore($secondDate));    // true

Dodawanie i odejmowanie dni/miesięcy/lat do daty

$date = Carbon::create(2018, 11, 03, 0);

echo $date->addDays(20); //2018-11-23 00:00:00
$date->subDays(20);

echo $date->addMonth(2); //2019-01-23 00:00:00
$date->subMonth(2);

echo $date->addYear(2);  //2021-01-23 00:00:00
$date->subYear(2);

// Można również wskazać co chcemy dodawać/odejmować, jako parametr. 

echo $date->add('day', 20); //2018-11-23 00:00:00
echo $date->sub('day', 20); //2018-11-03 00:00:00

Wbudowane stałe wartości

var_dump(Carbon::MONTHS_PER_YEAR);    // int(12)
var_dump(Carbon::HOURS_PER_DAY);      // int(24)
var_dump(Carbon::MINUTES_PER_HOUR);   // int(60)
var_dump(Carbon::SECONDS_PER_MINUTE); // int(60)

Powyższe przykłady i więcej zastosowań znajdziemy w dokumentacji Carbona.

Podobne biblioteki do Carbona

Period jest uboższą wersją Carbona. Zawiera podobne funkcje. Jednakże warto zwrócić uwagę, na to czego nie ma Carbon. Czyli iterowanie pomiędzy datami. O to przykład

use function League\Period\year;

foreach (year(2012)->getDatePeriod('1 MONTH') as $datetime) {
    echo $datetime->format('Y-m-d');
}

// Pętla wykona się 12 razy. Pierwszym wynikiem będzie 2012-01-01, natomiast ostatnim 2012-12-01.

Podsumowanie

Carbon jest zbudowany z intuicyjnie nazwanych metod. Kolejną zaletą tej biblioteki jest ilość funkcjonalności. W dużym stopniu ułatwia pracę z wbudowaną klasą DateTime. Dokumentacja jest przejrzysta oraz bogata w szczegółowe opisy danych funkcji. Z czystym sumieniem polecam implementację tejże biblioteki do swojego projektu.

Użyte źródła wiedzy

https://carbon.nesbot.com/docs [LINK]

Najnowsze wpisy

  • Git – własna komenda
  • Laravel – popularne paczki, które są w większości projektów.
  • SOAP PHP – garść przykładów i teorii.
  • 9 funkcji Laravel Eloquent, których nie ma w oficjalnej dokumentacji
  • Monitoruj stronę w sieci – Google Search Console

Kategorie

  • Aktualności
  • Inne
  • Laravel
  • PHP
©2021 Olek Kaim | Powered by SuperbThemes & WordPress