Arbeiten mit Daten in PHP: Bibliotheken und Werkzeuge
Das Arbeiten mit Datum und Zeit gehört zu den häufigsten Aufgaben in der Webentwicklung. PHP bietet die eingebaute Klasse DateTime, deren Funktionalität jedoch oft für komplexe Operationen nicht ausreicht: Berechnung von Zeitdifferenzen, lokalisierte Formatierung, Arbeit mit Zeitzonen. Hier helfen spezialisierte Bibliotheken. In diesem Artikel betrachten wir die besten Werkzeuge für die Arbeit mit Daten in PHP.
1. Die eingebaute Klasse DateTime
Bevor wir zu Drittanbieter-Bibliotheken übergehen, sollten wir uns an die native Lösung erinnern – die Klasse DateTime. Sie ist seit PHP 5.2 verfügbar und bietet grundlegende Funktionen:
- Erstellung von Datums- und Zeitobjekten
- Formatierung (über
format()) - Änderung des Datums (über
modify()) - Arbeit mit Zeitzonen (
DateTimeZone) - Vergleich von Daten
Anwendungsbeispiel:
<?php$date = new DateTime('2024-12-31');$date->modify('+1 day');echo $date->format('Y-m-d'); // 2025-01-01?>Allerdings hat DateTime Nachteile: fehlende praktische Methoden für die Arbeit mit Intervallen, Schwierigkeiten bei Methodenverkettung und eingeschränkte Unterstützung für menschenlesbare Formate.
2. Carbon – die beliebteste Bibliothek
Carbon ist eine Erweiterung für DateTime, die eine benutzerfreundliche API, Methodenverkettung und viele Hilfsfunktionen hinzufügt. Installation über Composer:
composer require nesbot/carbonWichtige Funktionen von Carbon:
- Menschenlesbare Methoden:
now(),yesterday(),tomorrow() - Lokalisierung (Unterstützung für die deutsche Sprache)
- Arbeit mit Intervallen:
diffForHumans() - Änderung des Datums durch Verkettung:
->addDays(5)->subMonths(2) - Vergleich:
isWeekend(),isPast(),isFuture()
Beispiel mit deutscher Lokalisierung:
<?phprequire 'vendor/autoload.php';use Carbon\\Carbon;
Carbon::setLocale('de');$date = Carbon::now();echo $date->diffForHumans(); // "gerade eben" oder "vor 3 Stunden"?>Carbon ist der De-facto-Standard für die Arbeit mit Daten in Laravel und vielen anderen Projekten.
3. Chronos – eine leichte Alternative
Chronos von CakePHP ist eine weitere Erweiterung von DateTime, die jedoch den Fokus auf Leichtigkeit und Leistung legt. Installation:
composer require cakephp/chronosUnterschiede zu Carbon:
- Keine Abhängigkeiten (außer PHP)
- Striktere Typisierung
- Standardmäßige Unterstützung unveränderlicher (immutable) Objekte
- Weniger Methoden, aber die wichtigsten sind vorhanden
Beispiel:
<?phpuse Cake\\Chronos\\Chronos;
$date = Chronos::now();$future = $date->addDays(10);echo $future->format('d.m.Y');?>Chronos eignet sich gut für Projekte, bei denen Code-Reinheit und Leistung wichtig sind, aber kein umfangreiches Ökosystem benötigt wird.
4. CarbonImmutable und DateTimeImmutable
Seit PHP 5.5 gibt es die Klasse DateTimeImmutable, die das ursprüngliche Objekt nicht verändert, sondern ein neues zurückgibt. In Carbon gibt es das Pendant – CarbonImmutable. Dies verhindert versehentliche Mutationen von Daten:
<?phpuse Carbon\\CarbonImmutable;
$date = CarbonImmutable::now();$newDate = $date->addDay();echo $date->format('Y-m-d'); // Original wurde nicht geändert?>Verwenden Sie immutable-Versionen, wenn Daten zwischen Funktionen übergeben oder im Cache gespeichert werden.
5. League\\Period – Arbeit mit Zeiträumen
Die Bibliothek Period von The League of Extraordinary Packages ist für die Arbeit mit Zeitintervallen und Zeiträumen konzipiert.
Auch in der Bibliothek
Konfiguration von Node.js-Anwendungen: Beste Bibliotheken und Praktiken
Fiber für Go: Vollständiges Tutorial mit Beispielen
gRPC für JavaScript (Node.js): Bibliotheken und Codebeispiele
Flurl für C# (.NET): Komplettguide mit Beispielen
Rate Limiting in C++: Bibliotheken und Implementierung zum Schutz von APIs