Arbeiten mit Datumsangaben in PHP: Die besten Bibliotheken und Werkzeuge
Die Verarbeitung von Datums- und Zeitangaben gehört zu den häufigsten Aufgaben in der Webentwicklung. PHP bietet einen leistungsstarken integrierten Werkzeugkasten, aber für komplexe Projekte werden oft komfortablere Bibliotheken benötigt. In diesem Artikel betrachten wir die grundlegenden Methoden zur Arbeit mit Datumsangaben in PHP, vergleichen beliebte Bibliotheken und zeigen praktische Beispiele.
Integrierte PHP-Klassen: DateTime und DateTimeImmutable
Seit Version 5.2 enthält PHP objektorientierte Klassen für die Arbeit mit Datumsangaben. Die wichtigsten sind:
DateTime— veränderbares Datums-/ZeitobjektDateTimeImmutable— unveränderliches Gegenstück (sicherer bei Übergabe als Referenz)DateInterval— Darstellung eines ZeitintervallsDatePeriod— Iteration über Datumsangaben mit einem bestimmten Intervall
Beispiel für die Erstellung und Formatierung eines Datums:
<?php$date = new DateTime('2024-12-25 10:30:00');echo $date->format('Y-m-d H:i:s'); // 2024-12-25 10:30:00
// Hinzufügen von 1 Woche$date->modify('+1 week');echo $date->format('Y-m-d'); // 2025-01-01?>Carbon — De-facto-Standard für Laravel
Carbon ist eine Erweiterung der DateTime-Klasse, die Dutzende praktischer Methoden hinzufügt. Die Bibliothek wird aktiv in Laravel und Symfony verwendet. Installation über Composer:
composer require nesbot/carbonHauptfunktionen von Carbon:
- Menschenlesbare Modifikatoren:
->addDay(),->subMonth(),->startOfWeek() - Lokalisierung:
Carbon::setLocale('de') - Relative Datumsangaben:
->diffForHumans()(gibt "vor 3 Stunden", "in 2 Tagen" zurück) - Parsing natürlicher Sprache:
Carbon::parse('next monday')
Beispiel für die Verwendung von Carbon:
<?phpuse Carbon\\Carbon;
$now = Carbon::now('Europe/Berlin');echo $now->toDateString(); // 2025-03-15
$birthday = Carbon::create(1990, 5, 20);echo $birthday->age; // 34
// Differenz zwischen Datumsangaben$start = Carbon::parse('2024-01-01');$end = Carbon::parse('2024-12-31');echo $start->diffInDays($end); // 365
// Relatives Datumecho Carbon::parse('-1 week')->diffForHumans(); // "vor 1 Woche"?>Chronos — Alternative von CakePHP
Chronos ist eine unabhängige Bibliothek, die von den Entwicklern von CakePHP erstellt wurde. Ihr Hauptunterschied ist die standardmäßige Unveränderlichkeit (wie DateTimeImmutable). Besonderheiten:
- Alle Objekte sind unveränderlich — sicherer für Multithread-Umgebungen
- Unterstützung von Zeitzonen unter Berücksichtigung der Sommerzeit
- Praktische Rundungsmethoden:
->startOfDay(),->endOfMonth() - Geringes Gewicht (keine Abhängigkeiten)
Beispiel für die Arbeit mit Chronos:
<?phpuse Cake\\Chronos\\Chronos;
$date = Chronos::now();echo $date->addDays(10)->format('d.m.Y'); // 25.03.2025
// Differenz mit Angabe der Genauigkeit$future = Chronos::create(2025, 12, 31);echo $date->diffInDays($future); // 291
// Datumsprüfungecho $date->isWeekend() ? 'Wochenende' : 'Werktag';?>CakePHP Time — für die Arbeit mit Zeitzonen
Ein weiteres Werkzeug von CakePHP — Cake\\I18n\\Time. Es erweitert Chronos und fügt Unterstützung für Internationalisierung hinzu. Nützlich, wenn Datumsangaben in verschiedenen Sprachen ausgegeben werden sollen:
<?phpuse Cake\\I18n\\Time;
Time::setDefaultLocale('de_DE');$time = Time::parse('2025-03-15 14:30:00', 'Europe/Berlin');echo $time->i18nFormat('dd MMMM yyyy'); // 15. März 2025?>Vergleich der Bibliotheken
Um die passende Bibliothek auszuwählen, beachten Sie die folgenden Kriterien:
- Carbon — die beste Wahl für Laravel-P