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:
Zeichen | Beschreibung | Beispiel für Rückgabewerte |
---|---|---|
a | Ante meridiem und Post meridiem (klein) | am oder pm |
A | Ante meridiem und Post meridiem (groß) | AM oder PM |
d | Tag des Monats mit führender Null | 01 bis 31 |
D | Tag der Woche (engl. drei Buchstaben) | Mon bis Sun |
F | Monat als Wort (engl.) | January bis December |
g | 12h-Format, ohne führende Null | 1 bis 12 |
G | 24h-Format, ohne führende Null | 0 bis 23 |
h | 12h-Format, mit führender Null | 01 bis 12 |
H | 24h-Format, mit führender Null | 00 bis 23 |
i | Minuten mit führender Null | 00 bis 59 |
j | Tag des Monats ohne führende Null | 1 bis 31 |
l | Tag der Woche | Sunday bis Saturday |
m | Monat als Zahl, mit führender Null | 01 bis 12 |
M | Monatsname (engl. drei Buchstaben) | Jan bis Dec |
n | Monatszahl, ohne führende Null | 1 bis 12 |
s | Sekunden, mit führender Null | 00 bis 59 |
w | Tag der Woche als Zahl | 0 (Sonntag) bis 6 (Samstag) |
Y | Jahreszahl, vierstellig | 1985 oder 2009 |
y | Jahreszahl, zweistellig | 85 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:
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:
2
3
$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):
2
3
4
5
6
7
8
9
10
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.