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]