Arbeiten mit Datum und Uhrzeit in PHP: Von A bis Z
Die Arbeit mit Datum und Uhrzeit gehört zu den häufigsten Aufgaben in der Webentwicklung. Ob es um die Ausgabe des Veröffentlichungsdatums, die Berechnung des Benutzeralters, die Protokollierung von Ereignissen oder die Erstellung eines Kalenders geht – PHP bietet ein leistungsstarkes und flexibles Werkzeugset. In diesem Artikel behandeln wir alle Aspekte: von einfachen Funktionen bis zum objektorientierten Ansatz mit der Klasse DateTime, einschließlich Zeitzonen und praktischen Beispielen.
Grundlegende Funktionen: date() und time()
Der grundlegende Funktionssatz für die Arbeit mit Datumsangaben umfasst time() und date(). Die Funktion time() gibt den aktuellen Unix-Zeitstempel zurück (Anzahl der Sekunden seit dem 1. Januar 1970). Die Funktion date() formatiert diesen Zeitstempel in eine menschenlesbare Form.
Aktuelles Datum und Uhrzeit abrufen
Der einfachste Weg, das aktuelle Datum auszugeben:
<?phpecho date('Y-m-d H:i:s'); // 2025-04-10 15:30:45?>Formatierung mit date()
Die Funktion date() akzeptiert zwei Parameter: das Format und einen optionalen Zeitstempel. Die gängigsten Formatierungszeichen:
d– Tag des Monats (01–31)m– Monat (01–12)Y– Jahr im 4-stelligen FormatH– Stunden im 24-Stunden-Format (00–23)i– Minuten (00–59)s– Sekunden (00–59)
Beispielausgabe mit deutschem Text:
<?phpecho 'Heute ist der ' . date('d.m.Y') . ', Uhrzeit ' . date('H:i');// Heute ist der 10.04.2025, Uhrzeit 15:30?>Die Klasse DateTime: Objektorientierter Ansatz
Für komplexe Operationen wird die Verwendung der Klasse DateTime empfohlen. Sie ist intuitiv, unterstützt Zeitzonen und vereinfacht die Manipulation von Datumsangaben.
Erstellen eines DateTime-Objekts
Ein Objekt kann auf verschiedene Weise erstellt werden:
<?php// Aktuelles Datum und Uhrzeit$now = new DateTime();echo $now->format('Y-m-d H:i:s'); // 2025-04-10 15:30:45
// Bestimmtes Datum$date = new DateTime('2025-12-31 23:59:59');echo $date->format('d.m.Y'); // 31.12.2025
// Mit relativem Format$nextWeek = new DateTime('+1 week');echo $nextWeek->format('Y-m-d');?>Datum ändern: modify()
Die Methode modify() ermöglicht das einfache Hinzufügen oder Subtrahieren von Intervallen:
<?php$date = new DateTime('2025-04-10');$date->modify('+10 days');echo $date->format('d.m.Y'); // 20.04.2025
$date->modify('-1 month');echo $date->format('d.m.Y'); // 20.03.2025?>Arbeiten mit Zeitzonen
Das Ignorieren von Zeitzonen ist ein häufiger Fehler. PHP bietet zwei Möglichkeiten, diese zu verwalten: global über date_default_timezone_set() und lokal über das Objekt DateTimeZone.
Globale Einstellung
Legen Sie die Zeitzone am Anfang des Skripts fest:
<?phpdate_default_timezone_set('Europe/Berlin');echo date('H:i'); // Uhrzeit nach Berliner Zeit?>Lokale Einstellung für DateTime
Jedes DateTime-Objekt kann seine eigene Zeitzone haben:
<?php$timezone = new DateTimeZone('Europe/Berlin');$date = new DateTime('now', $timezone);echo $date->format('H:i'); // Uhrzeit in Berlin
// Zeitzone eines bestehenden Objekts ändern$date->setTimezone(new DateTimeZone('America/New_York'));echo $date->format('H:i'); // Konvertierte Uhrzeit?>Differenz zwischen Daten: DateInterval
Die Klasse DateInterval und die Methode diff() ermöglichen die Berechnung der Differenz zwischen zwei Daten.
Differenz berechnen
<?php$start = new DateTime('2025-01-01');$end = new DateTime('2025-12-31');$interval = $start->diff($end);
echo $interval->days; // 364 (Anzahl