PHP: DateTime, DateInterval & DatePeriod verwenden
Für PHP gibt es viele hilfreiche Funktionen zum Arbeiten mit Datums- & Uhrzeitangaben. Bekannte Vertreter sind hier z.B. die Funktionen date
und strtotime
.
Seit Einzug der objektorientierten Programmierung in PHP gibt es hierfür aber auch spezielle Klassen, die einem die Arbeit mit Zeitangaben enorm erleichtern.
In diesem Beitrag erfahrt ihr die grundlegende Verwendung der DateTime
-Klasse.
DateTime-Objekt erzeugen
Beim Erzeugen eines DateTime
-Objekts können wir dem Konstruktor der Klasse ein Datum als String übergeben. Möchten wir z.B. ein Objekt haben, welches das aktuelle Datum repräsentiert, dann reicht folgende Instanziierung:
Um das Ganze etwas leserfreundlicher zu machen, können wir auch Folgendes schreiben:
Als nächstes haben wir z.B. ein Datum in einem bestimmten Format gegeben:
Wie zu erkennen ist, könnt ihr den String direkt dem Konstruktor übergeben.
Formatierte Datums- bzw. Zeitangabe
Das Datum bzw. die Zeit, die ein DateTime
-Objekt repräsentiert, kann mittels format
in einen formatierten String ausgegeben werden:
DateTime modifizieren
Im Moment arbeite ich gerade an einer Applikation die eine Art Kalender-Feature beinhaltet. Dabei benötige ich des Öfteren basierend auf einem bestimmten Datum ein Datum, dass z.B. 7 Tage oder 1 Jahr in der Zukunft liegt.
Auch solche Anwendungsfälle lassen sich mit der DateTime
-Klasse unkompliziert erledigen:
Zeitraum zwischen zwei Datumsangaben ermitteln
Was ich weiterhin benötigte war, dass ich den Zeitraum zwischen einem gegebenen Start- und Enddatum brauchte. Ich wollte also über den Zeitraum iterieren, also eine Schleife laufen lassen.
Wie immer führen mehrere Wege zum Ziel und mein erster Gedanke war Folgender:
DateInterval & DatePeriod verwenden
Nach einem Blick in die PHP-Dokumentation sind mir dann aber die Klassen DateInterval
und DatePeriod
aufgefallen.
Damit sieht die Lösung dann, wie ich finde, etwas eleganter aus:
Das DateInterval
haben wir in unserem Fall auf einen 1 Tag gesetzt. Das Intervall als auch Start- und Enddatum können wir anschließend dem Konstruktor der DatePeriod
-Klasse übergeben.
Danach können wir mittels foreach
den Zeitraum "durchwandern".
Fazit
Die DateTime
-Klasse unterstützt einen bei Arbeiten mit Datums- & Zeitangaben und bietet einige nützliche Methoden.
Gerade für diejenigen, die objektorientiert programmieren sind die vorgestellten Klassen eine gute Alternative zu den prozeduralen Datums- & Zeit-Funktionen von PHP.
Ich selbst nutze in meinen PHP-Projekten eigentlich nur noch die genannten Klassen und verzichte auf den Einsatz von date
und Co.
- 13. März 2013
ursprüngliche Veröffentlichung in meinem ehemaligen Blog "Smart-Webentwicklung"