In diesem Tutorial möchte ich Ihnen näher zeigen, wie Sie mithilfe der mktime()-Funktion in PHP ein Datum in einen Unix-Timestamp umwandeln kann. Dieser spiegelt die Anzahl der seit dem 1. Januar 1970 00:00:00 Uhr (GMT) bis zum gegebenen Datum vergangenen Sekunden wider.
Um der mktime()
-Funktion ein Datum zu übergeben, werden Parameter für Stunde, Minute, Tag und weitere Datumsangaben benötigt. Diese Parameter sind optional. Werden einige weggelassen, nutzt die Funktion die aktuelle Systemzeit. Nach einem weggelassenen Parameter können folgende Angaben nicht mehr verwendet werden. Fehlt z. B. der Monat, lassen sich Tag, Jahr und die Sommer- bzw. Winterzeitangabe nicht mehr festlegen.
Die genaue Syntax der mktime()-Funktion mit ihren einzelnen Parametern ist wie folgt:
mktime(Stunde, Minute, Sekunde, Monat, Tag, Jahr, Sommer-/Winterzeit)
Dem letzten Parameter von mktime() kann entweder 1 für Sommerzeit, 0 für Winter-/Normalzeit oder -1 für Unbekannt, bei welchem PHP versucht den Wert selbst herauszufinden, übergeben werden. Allerdings kann eine Angabe des letzten Parameters zu weiteren Schwierigkeiten folgen. Zum Beispiel, wenn PHP selbst versucht den Wert herauszufinden oder wenn bei aktivierter Sommerzeit beim Tag der Umstellung alle Zeiten von 2:00 bis 3:00 Uhr ungültig sind. Deswegen ist es ratsam den Parameter nicht zu übergeben, also ihn bei 0 (Normalzeit) zu belassen.
Im Folgenden ein Beispiel, bei dem mktime() ein Datum übergeben bekommt und der berechnete Timestamp bei Erfolg ausgegeben wird.
Code für das Beispiel 1:
<?php
$stunde = '01';
$minute = '01';
$secunde = '01';
$tag = '26';
$monat = '08';
$jahr = '2010';
$timestamp = mktime($stunde, $minute, $secunde,
$monat, $tag, $jahr);
if ($timestamp != false)
echo 'Der Timestamp ist: '. $timestamp;
else
echo 'Der Timestamp konnte nicht ermittelt
werden!';
?>
Ausgabe für das Beispiel 1:
Der Timestamp ist: 1282784461
Wäre etwas bei der Erstellung des Timestamps schiefgelaufen, zum Beispiel wenn ein ungültiges Datum verwendet worden wäre, hätte die Ausgabe so ausgesehen:
Der Timestamp konnte nicht ermittelt werden!
Hinweis: Ab der Php Version 5.1 oder höher kommt ein Hinweis, wenn mktime()ohne alle Parameter verwendet wird. Wenn Sie „Sommer-/Winterzeit“ bei mktime() angeben, die höher als die Php Version 5.3 ist, kommt ein Hinweis, dass dieser Parameter veraltet ist.