Datum und Zeit in PHP

PHP bietet bereits von Haus aus viele Funktionen in Zusammenhang mit Datum und Zeit und die Verwendung ist daher sehr einfach.

Die Grundlage aller Funktionen ist dabei der sogenannte UNIX-Timestamp, mit dem PHP intern rechnet und der auch für eigene Operationen Sinn macht. Der UNIX-Timestamp ist nichts anderes als die Zeit in Sekunden vom 01.01.1970 0:00 Uhr gesehen. Dabei kommt dann eine Zahl wie 1260749485 heraus (bei einem Datum vor dem 01.01.1970 läuft der Timestamp entsprechend andersherum und wird mit einem Minus versehen). Dies mag auf den ersten Blick unhandlich und seltsam erscheinen, macht das Rechnen und Arbeiten mit Datumsangaben jedoch erst flexibel. Warum? Eine Zahl lässt sich sehr einfach in einer Datenbank abspeichern (z.B. fürs Anmeldedatum eines Benutzers), eine Zahl lässt sich flexibel weiterarbeiten, eine Zahl kann in verschiedene andere Formate problemlos hin und zurückverwandelt werden. Ein Datum wie 10.01.2000 zu speichern mag zwar auf den ersten Blick sinnvoll erscheinen, man stellt dabei jedoch schnell fest, dass sich damit schlecht rechnen lässt. Es ist jedoch auch gar nicht nötig, denn PHP bietet von Haus aus Möglichkeiten, den Timestamp jederzeit in ein beliebiges Datumsformat hin und zurück zu verwandeln. Doch dazu später.

Wie kann man zunächst einmal den aktuellen Timestamp ermitteln? Hierzu dient der Befehl time():

<?php
$timestamp = time();
echo $timestamp;
?>

Das obige Beispiel legt den Timestamp in der Variable $timestamp ab und gibt ihn dann per echo am Bildschirm aus.

Doch wie lässt sich der Timestamp wieder in ein richtiges Datum zurückverwandeln? Hier kommt der Befehl date zum Einsatz. Ein Beispiel macht es deutlich:

<?php
$timestamp = time();

$datum = date("d.m.Y",$timestamp);
$zeit = date("H:i",$timestamp);

echo $datum."<br>".$zeit;
?>

Die Ausgabe auf dem Bildschirm würde in diesem Fall

14.12.2009
17:01

lauten. Wie kommt dies zustande? Der Befehl date nimmt den in $timestamp erhaltenen Wert und wandelt ihn jeweils nach den Parametern "d.m.Y" sowie "H:i" in ein für Menschen lesbares Format um. d.m.Y sorgt hier für das Datum, H:i für die Uhrzeit. Klingt komplizierter als es ist, denn diese Parameter sind genormt:

Klingt komplizierter als es ist, denn diese Parameter sind genormt:

Tag

Parameter Beispiel
d Tag des Monats, mit führenden Nullen 01 bis 31
D Ausgeschriebener Tag Mon
l vollständig ausgeschriebener Tag Montag
j Tag des Monats, ohne führende Nullen 1 bis 31
N Aktueller Tag der Woche 0 bis 7
z Aktueller Tag des Jahres 0 bis 365

Woche

Parameter Beispiel
W Aktuelle Woche des Jahres 1-53

Monat

Parameter Beispiel
m Monat des Jahres, mit führenden Nullen 01 bis 12
n Monat des Jahres, ohne führende Nullen 1 bis 12
M Ausgeschriebener Monat Jan
F vollständig ausgeschriebener Monat Januar
t Anzahl der Tage des Monats 28 bis 31

Jahr

Parameter Beispiel
y zweistellige Jahreszahl 99
Y vierstellig dargestellte Jahreszahl 2009
M Ausgeschriebener Monat Jan bis Dez
L Gibt an ob das Jahr ein Schaltjahr ist 1 oder 0

Diese Parameter lassen sich natürlich auch beliebig kombinieren. So ergibt z.B:

<?php
$timestamp = time();

$datum = date("l,d.m.Y",$timestamp);

echo $datum;
?>

eine Ausgabe wie:

Samstag, 19.12.2009