PHP – Teil 12: Timestamps

In vielen Situationen müssen wir in PHP mit einem Datum arbeiten – oder auch gleich mehrere Daten berechnen. Möchten wir zum Beispiel einen bestimmten Zeitraum berechnen (stellen wir uns einfach ein Buchungsformular für ein Hotelzimmer oder eine Flugseite vor) haben wir dafür mehrere Möglichkeiten. In diesem Artikel sehen wir uns zuerst einmal die Timestamps an – eine sehr beliebte Methode zum Speichern und Verarbeiten von Zeitdaten.

Was sind Timestamps?

In vielen Programmiersprachen wird bei einem Datum mit einem sogenannten Timestamp gearbeitet. Auch PHP bietet hier keine Ausnahme und verwendet hauptsächlich den UNIX Timestamp. Ein Timestamp ist normalerweise eine Zahl, die die Anzahl an Sekunden darstellt, die zwischen einem bestimmten Zeitpunkt und dem jetzigen Moment vergangen ist. Im Fall des UNIX Timestamps ist das die Anzahl an Sekunden seit dem 01. Januar 1970 00:00:00 Uhr.

Da sich dieser Zeitstempel jede Sekunde ändert wird er auch oft als Grundlage für die Berechnung von Zufallszahlen verwendet.

Der Vorteil dieser Art der Datumsberechnung liegt darin, dass wir unser Datum in einem einheitlichen Format – welches in vielen Programmiersprachen verstanden wird – vorliegen haben; und das sogar bequem als Integer. Der Nachteil ist natürlich die umständliche Berechnung wenn es um mehr als nur dieses Datum geht. Zeitintervalle zu berechnen zieht leider einen größeren Rattenschwanz hinter sich her. Aber dazu kommen wir später, sehen wir uns nun erstmal an, wie wir überhaupt einen Timestamp in PHP benutzen.

War ja gar nicht so schwer. Die Funktion time() gibt uns den aktuellen Zeitstempel im Moment des Aufrufs zurück (das hängt natürlich von der eingestellten Serverzeit und Zeitzone ab – aber das würde den Rahmen dieses Artikels sprengen). Nun haben wir zwar einen Timestamp, ein Besucher unserer Website kann damit aber logischerweise nur sehr wenig anfangen. Also muss es doch eine Möglichkeit geben, diese lange Zahl in ein für Durchschnittsmenschen verständliches Datum umzuwandeln. Gibt es!

 

Timestamps leserlich machen

Die praktische date() Funktion übernimmt genau das für uns. Sie nimmt einen Timestamp als zweiten Parameter – den man allerdings auch auslassen kann um einfach den aktuellen zu verwenden – und wandelt diesen anhand der Werte im ersten Parameter in ein Datum um. Dabei stehen die einzelnen Buchstaben für einen bestimmten Zeitwert, der an Stelle des Buchstabens eingefügt wird.

Das d in obigem Beispiel wird durch den zweistelligen Tag des Monats ersetzt (also 01 bis 31, je nachdem welchen Tag der Timestamp repräsentiert). Das Y durch die vierstellige Jahreszahl (also 1970 bis 20xx). Alle Konfigurationswerte kann man bequem unter obigem Link nachlesen.

Mit so einem Timestamp könnten wir nun zum Beispiel in der Datenbank speichern, wann ein bestimmter Beitrag hinzugefügt wurde (für News, Forenbeiträge, Blogposts oder ähnliches) und können diese Information leserlich an den User weitergeben. Doch was ist nun, wenn der User selbst ein Datum eingeben kann (ein Geburtsdatum oder vielleicht einen Zeitpunkt für ein Event) und wir dieses speichern und verarbeiten möchten?

 

Einen Timestamp aus einem String erzeugen

Wie immer bietet uns PHP eine simple Funktion für alle unsere Wünsche, in diesem Fall strtotime() (also String to Timestamp). Diese funktioniert genau wie man es sich bei dem Namen denkt – sie wandelt einen String für uns in einen Timestamp um. Dabei akzeptiert strtotime() verschiedene Datumsformate (zum Beispiel das deutsche Format DD.MM.YYYY, aber auch andere Formate wie MM-DD-YYYY oder MM/DD/YYYY).

Außerdem bietet die Funktion uns die praktische Möglichkeit, als zweiten Parameter einen Timestamp zu übergeben (wird dieser weggelassen wird wieder der aktuelle Zeitpunkt angenommen) und von diesem aus einen gewissen Zeitraum zu berechnen. Übergebe ich also als ersten Parameter den String +2 months und lasse den zweiten leer gibt strtotime() mir den Timestamp für heute in zwei Monaten aus. Die genauen Möglichkeiten können wir wie immer auf php.net nachlesen.

 

Mit diesen drei Funktionen lässt sich schon viel anstellen. Natürlich gibt es noch Duzende mehr aber die sehen wir uns ein andermal genauer an – genau wie die DateTime Objekte.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*