In diesem Tutorial möchte ich Ihnen näher zeigen, wie man mit Hilfe 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 wieder.
Um der mktime()-Funktion ein Datum zu übergeben, besitzt diese Parameter für alle Angaben die bei einem Datum eine Rolle spielen, also Stunde, Minute, Tag, etc. Diese sind jedoch alle optional und können gegebenenfalls weggelassen werden, was dazu führt, das die aktuelle Systemzeit verwendet wird. Dabei ist zu beachten, dass alle Parameter, die nach einem Ausgesetztem kommen, nicht mehr benutzt werden können. Lässt man also den Monat weg, kann man auch den Tag, das Jahr, sowie die Angabe über die Sommer- bzw. Winterzeit nicht mehr übergeben.
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() eine 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 schief gelaufen, 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, das dieser Parameter veraltet ist.