PHP-Tutorial: Datum und Zeit

Auch PHP kann auf die Uhr gucken! Aber wie sagt es uns dann auch die Uhrzeit? Die Antwort liefert uns die Funktion date(FORMAT, [TIMESTAMP]), mit der wir einen formatierten String passend zu unserem FORMAT erhalten. Per Parameter TIMESTAMP können wir einen Unix-Timestamp übergeben um ein bestimmtes Datum/Zeit zu erzeugen, wird dieser nicht mit angegeben, bekommen wir das aktuelle Datum und die aktuelle Zeit. Aber was hat es mit dem Format auf sich? Als Format übergeben wir einen Muster-String, in dem gewisse Zeichen folgende Bedeutung haben:

ZeichenBeschreibungBeispiel für Rückgabewerte
aAnte meridiem und Post meridiem (klein)am oder pm
AAnte meridiem und Post meridiem (groß)AM oder PM
dTag des Monats mit führender Null01 bis 31
DTag der Woche (engl. drei Buchstaben)Mon bis Sun
FMonat als Wort (engl.)January bis December
g12h-Format, ohne führende Null1 bis 12
G24h-Format, ohne führende Null0 bis 23
h12h-Format, mit führender Null01 bis 12
H24h-Format, mit führender Null00 bis 23
iMinuten mit führender Null00 bis 59
jTag des Monats ohne führende Null1 bis 31
lTag der WocheSunday bis Saturday
mMonat als Zahl, mit führender Null01 bis 12
MMonatsname (engl. drei Buchstaben)Jan bis Dec
nMonatszahl, ohne führende Null1 bis 12
sSekunden, mit führender Null00 bis 59
wTag der Woche als Zahl0 (Sonntag) bis 6 (Samstag)
YJahreszahl, vierstellig1985 oder 2009
yJahreszahl, zweistellig85 oder 09


Dies sind natürlich nur die wichtigsten und es gibt eine Menge weitere bedeutungsvolle Zeichen. Möchte man nun recht einfach den aktuellen Tag und die Uhrzeit ausgeben, benutzt man folgendes:

1
echo date("d.m.Y - H:i");

und bekommt beispielsweise 08.07.2009 - 02:54. Das heißt die Zeichen, welche für die date-Funktion eine Bedeutung haben, werden durch ihre Bedeutung ersetzt, alle anderen bleiben erhalten. Möchte man ein Zeichen ausgeben, was eigentlich eine Bedeutung hätte, kann man dies natürlich wieder mit den Backsalsh (\) escapen.

Jetzt haben wir eventuell ein kleines Problem wenn wir an einer deutschsprachigen Seite schreiben, denn alle Monate und Tage haben englische Namen. Das können wir leicht mit unserem Freund, dem Array, lösen. Wir lassen uns einfach den Tag der Woche als Zahl ausgeben (w) und basteln uns dementsprechen ein Array zusammen, das an Stelle 0 z.B. den Sonntag beherbergt und aufsteigend die restlichen Wochentage:

1
2
3
$tag = date("w");
$tage = array ("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
echo $tage[$tag];

Ist nun zum Beispiel Mittwoch, bekommen wir mit date("w") eine 3, welche wir in $tag abspeichern. Bei der Ausgabe geben wir das Element an Stelle 3 des Arrays $tage aus (erinnert euch, dass wir bei 0 anfangen zu zählen, also ist es das 4. Element), und das 4. Element ist gerade der Mittwoch! Prima! Genauso machen wir es jetzt auch bei den Monaten (in einer etwas kürzeren Form):

1
2
3
4
5
6
7
8
9
10
$monate = array(1=>"Januar", 2=>"Februar", 3=>"März", 4=>"April",
5=>"Mai", 6=>"Juni", 7=>"Juli", 8=>"August",
9=>"September", 10=>"Oktober", 11=>"November",
12=>"Dezember");
/*Dass ich das Array ueber mehrere Zeilen
erstelle macht keinen Unterschied, fuer PHP Endet
eine Anweisung mit dem Semikolon, auch wenn 100 leere
Zeilen dazwischen stehen ;-)
*/

echo $monate[date ("n")];

Da die Monate bei 1 beginnen, müssen wir uns ein assoziatives Arrays erstellen oder eben mit $monate[date ("n") - 1]; auf das korrekte Element zugreifen. Mir gefällt jedoch die Lösung mit dem assoziativen Array für das Tutorial besser, auch wenn die andere Lösung sicher effizienter wäre. Ihr könnt ja mal beide probieren und Zeit messen.

© 2009-2017 by Martin Scharm