| |
| * Link führt ins Internet |
|
| |
Ganz ähnlich wie mit dem Datum kann auch mit der Zeit gearbeitet werden. Die folgende Tabelle enthält eine Auflistung der wesentlichen Zeitfunktionen.
| Funktione | Beispiel | Beschreibung |
| localtime ( [$tstamp [, is_associative]]) | localtime() | Ermittelt die lokalen Zeitwerte. Sollte der optionale Parameter is_associative auf 1 gesetzt werden, wird ein assoziatives array zurück geliefert, ansonsten ein indiziertes. |
| mktime($hour, $min, $sec, $month, $day, $year, $dst) | mktime(0,0,0,1,1,2005) => 1104534000 | Gibt den UNIX-Zeitstempel (Timestamp) für ein Datum zurück. Der Parameter $dst gibt an ob es sich um Sommerzeit (1) oder Winterzeit (0) handelt. |
| gmmktime($hour, $min, $sec, $month, $day, $year, $dst) | gmmktime(0,0,0,1,1,2005) => 1104537600 | Gibt den GMT-Zeitstempel (Timestamp) für ein Datum zurück. Der Parameter $dst gibt an ob es sich um Sommerzeit (1) oder Winterzeit (0) handelt. |
| time() | time() => 1073770551 | Gibt den UNIX-Zeitstempel sekundengenau zurück. |
| microtime() | microtime() => 0.96976100 1073770614 | Wie time(), aber die Genauigkeit liegt im Mikrosekundenbereich. Ist nicht unter Windows verfügbar. |
| strftime("format",$tstamp) | strftime("%A") => Saturday | Formatiert eine Zeitausgabe. |
| gettimeofday() | print_r(gettimeofday()) => Array ( [sec] => 1073770692 [usec] => 849883 [minuteswest] => -60 [dsttime] => 1 ) | Gibt die aktuelle Tageszeit zurück. |
| gmstrftime("format",$tstamp) | gmstrftime("%A") => Saturday | Wie strftime(), jedoch mit GMT als Zeitzone. |
Einsatz von mktime()
Zahlreiche Datums- und Zeitfunktionen rechnen mit der internen Angabe des Unix-Zeitstempels. Diese Angabe stellt die Anzahl der Sekunden seit dem 01.01.1970 00:00 Uhr dar. Um nun eine solche Angabe für ein spezifisches Datum zu erhalten, setzen Sie mktime() ein. Wie wäre es mit dem Zeitstempel für 1.1.2004:
// Ausgabe 1072911600
echo mktime(0,0,0,1,1,2004);
|
Der letzte Tag eines Monats kann als der Tag "0" des nächsten Monats ausgedrückt werden. Jedes der folgenden Beispiele gibt die Zeichenkette "Letzter Tag im Feb. 2000 ist der 29." zurück.
$letzertag = mktime (0,0,0,3,0,2004);
// Letzter Tag im Feb. 2000 ist der 29.
echo strftime ("Letzter Tag im Feb. 2004 ist der %d.", $letzertag);
|
$lastday = mktime(0,0,0,4,-31,2004);
// Letzter Tag im Feb. 2004 ist der 29.
echo strftime ("Letzter Tag im Feb. 2000 ist der %d.", $letzertag);
|
Datumsberechnungen
Manchmal müssen mit Daten Berechnungen vorgenommen werden. Die folgenden Beispiele zeigen, wie man das mit den gezeigten Funktionen leicht realisieren kann:
gestern = mktime(0,0,0,date("m"), date("d")-1, date("Y"));
$morgen = mktime(0,0,0,date("m"), date("d")+1, date("Y"));
$letztenmonat = mktime(0,0,0,date("m")-1, date("d"), date("Y"));
$naechstesjahr = mktime(0,0,0,date("m"), date("d"), date("Y")+1);
echo "Gestern: $gestern<br>";
echo "Morgen: $morgen<br>";
echo "Letzenmonat: $letztenmonat<br>";
echo "Nächstesjahr: $naechstesjahr<br>";
|
Ausgabe
Gestern: 1073689200
Morgen: 1073862000
Letzenmonat: 1071097200
Nächstesjahr: 1105398000
|
oder mit Hilfe von date formatiert:
echo "Gestern: ". date("d.M.Y",$gestern) . "<br>";
echo "Morgen: ". date("d.M.Y",$morgen) . "<br>";
echo "Letztenmonat: ". date("d.M.Y",$letztenmonat) . "<br>";
echo "Nächstesjahr: ". date("d.M.Y",$naechstesjahr) . "<br>";
|
Ausgabe
Gestern: 10.Jan.2004
Morgen: 12.Jan.2004
Letztenmonat: 11.Dec.2003
Nächstesjahr: 11.Jan.2005
|
Einsatz von localtime()
Die Funktion localtime() gibt entweder indiziertes oder assoziatives Array zurück, welches hinsichtlich seiner Struktur identisch ist mit dem des Funktionsaufrufs in C.
Beispiel – indiziertes Array
<pre>
<?php
print_r(localtime());
?>
</pre>
|
Ausgabe
Array
(
[0] => 4
[1] => 35
[2] => 23
[3] => 10
[4] => 0
[5] => 104
[6] => 6
[7] => 9
[8] => 0
)
|
Beispiel – assoziatives Array
<pre>
<?php
print_r(localtime(mktime(0,0,0,10,1,2004),1));
?>
</pre>
|
Ausgabe
Array
(
[tm_sec] => 0
[tm_min] => 0
[tm_hour] => 0
[tm_mday] => 1
[tm_mon] => 9
[tm_year] => 104
[tm_wday] => 5
[tm_yday] => 274
[tm_isdst] => 1
)
|
Die Bezeichner der verschiedenen Schlüssel dieses assoziativen Arrays lauten:
• "tm_sec" - Sekunde
• "tm_min" - Minute
• "tm_hour" - Stunde
• "tm_mday" - Tag des Monats
• "tm_mon" - Monat des Jahres, beginnt bei 0 (Januar) endet bei 11 (Dezember)
• "tm_year" - Jahr seit 1900
• "tm_wday" - Tag der Woche
• "tm_yday" - Tag des Jahres
• "tm_isdst" - für das Datum ist die Sommerzeit zu berücksichtigen
Einsatz von strftime()
Die Funktion strftime() arbeitet ähnlich, wie date() und formatiert eine Datums- und Zeitangabe anhand einer Formatierungsanweisung. Sie sollten jedoch beachten, dass die strftime()-Parameter nur teilweise mit denen von date() übereinstimmen und in einigen Fällen eine völlig andere Bedeutung haben.
| Symbol | Rückgabewerte (Beispiele) | Beschreibung |
| %a | Mon bis Sun | abgekürzter Name des Wochentages, abhängig von der gesetzten Umgebung. |
| %A | Monday bis Sunday | ausgeschriebener Name des Wochentages, abhängig von der gesetzten Umgebung. |
| %b | Jan bis Dec | abgekürzter Name des Monats, abhängig von der gesetzten Umgebung. |
| %B | January bis December | ausgeschriebener Name des Monats, abhängig von der gesetzten Umgebung |
| %c | siehe setlocale() weiter unten | Wiedergabewerte für Datum und Zeit, abhängig von der gesetzten Umgebung |
| %C | 00 bis 99 | Jahrhundert, Jahr geteilt durch 100, gekürzt auf Integer. |
| %d | 01 bis 31 | Tag des Monats als Zahl. |
| %e | 1 bis 31 | Tag des Monats als Dezimal-Wert, einstelligen Werten wird ein Leerzeichen voran gestellt. |
| %H | 00 bis 23 | Stunde als Zahl im 24-Stunden-Format. |
| %I (grosses i) | 01 bis 12 | Stunde als Zahl im 12-Stunden-Format. |
| %j | 001 bis 366 | Tag des Jahres als Zahl. |
| %m | 01 bis 12 | Monat als Zahl, ohne führende 0. |
| %M | 00 bis 59 | Minute als zweistelliger Dezimal-Wert. |
| %n | - | neue Zeile |
| %p | am oder pm | entweder am oder pm, abhängig von der gesetzten Umgebung. |
| %S | 0 bis 59 | Sekunden als Dezimal-Wert |
| %t | - | Tabulator |
| %U | 00-06 | Wochennummer im Jahr, startet die Zählung am ersten Sonntag. |
| %W | 00-06 | Wochennummer im Jahr, startet die Zählung am ersten Montag. |
| %w | 0 (Sonntag) bis 6 (Samstag) | Numerische Darstellung des Wochentags. |
| %x | siehe setlocale() weiter unten | Vollständige Datumsangabe entsprechend der lokalen Einstellungen. |
| %X | siehe setlocale() weiter unten | Vollständige Datumsangabe entsprechend der lokalen Einstellungen. |
| %y | 04 | Zweistellige Ausgabe der Jahreszahl |
| %Y | 2004 | Vierstellige Ausgabe der Jahreszahl |
| %Z | -43200 bis 43200(entspricht: -12 / +12 Stunden) | Offset der Zeitzone in Sekunden. Der Offset für Zeitzone West nach UTC ist immer negativ und für Zeitzone Ost nach UTC immer positiv. |
| %% | % | Prozentzeichen |
Einsatz von setlocale()
Interessant ist an dieser Funktion, dass sich die Ausgabe mit Hilfe der Funktion setlocale() an die sprachlichen Besonderheiten einer bestimmten Region anpassen lassen.
Beispiel
<?php
echo strftime("%A auf Deutsch ");
setlocale(LC_TIME,'de_DE@euro', 'de_DE', 'de', 'ge');
echo strftime("%A");
?>
|
Ausgabe
Sunday auf Deutsch Sonntag
|
Wie Sie sehen stehen Ihnen diverse Kurzformen für die deutschsprachige Region zur Verfügung.
Die Funktion setlocale() hat folgenden Aufbau:
setlocale(category, localid);
Der Parameter category wird durch folgende Werte bestimmt:
• LC_ALL - für alle folgenden Werte
• LC_COLLATE – Wirkt auf Zeichenkettenvergleiche.
• LC_CTYPE - Wirkt auf die Zeichensetzung, beispielsweise in strtoupper().
• LC_MONETARY – Wirkt auf Währungsfunktionen wie localeconv().
• LC_NUMERIC – Bestimmt das Dezimal-Trennzeichen.
• LC_TIME – Wirkt auf Datums- und Zeitformatierungen mit strftime().
Als localid wird der ISO-Landescode angegeben, auf dessen Parameter die Ausgabe gesetzt werden sollen. Wird eine leer Zeichenkette genutzt, versucht PHP entsprechende Variablen in der Betriebssystem-Umgebung zu finden. Wird eine 0 angegeben, werden die aktuellen Einstellungen nicht geändert, dafür jedoch zurückgegeben. Die Funktion gibt FALSE zurück, wenn der lokale Code nicht implementiert wurde.
|
|
|
|
|
|
|