Werbung einblenden Werbung ausblenden


Home / Tutorials / PHP Handbuch / Der erste PHP Skript


Operationen mit Datumsangabe
Ermitteln des heutigen Datums
Die Funktion mktime-An welchem Wochentag ist Weihnachten

Operationen mit Datumsangabe

Im Zusammenhang mit Datumsangaben sind mehrere Probleme zu lösen. Das naheliegendste Problem ist wohl, das aktuelle Datum überhaupt erst zu ermitten. Weiter muss man sich dafür entscheiden, in welchem Format es dargestellt werden soll. Man kann auch wissen wollen, was für ein Wochentag am Datum xx.xx.xxxx war. Bei vielen Anwendungen im e-commerce Bereich, etwa bei einer Auktion, kann man auch wissen wollen, welches Datum man hat, wenn man zum heutigen Datum x Tage hinzuaddiert.

Ermitteln des heutigen Datums

Die Funktion date
Die einfachste Möglichkeit, das heutige Datum zu ermitteln sieht so aus:

<?
$datum = date("d.m.Y H:i:s");
print $datum;
?>

Das liefert dann als Ergebnis so etwas in der Art:
14.12.2002 00:54:17

Hierbei steht das d für den Tage des Monats, das m für den Monat, das Y für das Jahr, H für Stunde i für Minutes und s für Sekunden. PHP bietet sehr viele Möglichkeiten, das Datum darzustellen. Man könnte auch etwas in der Art machen:

<?
datum = date("m.F.Y H:i:s");
?>

Das Ergebnis sieht dann so aus:
12.December.2002 01:07:38

Wie unschwer zu erkennen, steht F hierbei für den ausgeschriebenen Monat. Die Optionen sind reichhaltig, sind aber an jeder Ecke im Internet dokumentiert.
Die Funktionen setlocale, strftime
Naheliegend ist hierbei der Wunsch, das Datum auf Deutsch zu erhalten. Das geht dann so:


<?
setlocale('LC_TIME', 'German_Germany');
$datum = strftime('%A, der %d.%B.%Y %H:%M:%S');
print $datum;
?>

Die Funktion strftime ermittelt ebenfalls das Datum, mit dem Unterschied, dass die Ausgaben in der Sprache erfolgen, die mit der Funktion setlocale definiert wurden. Die Funktion setlocale hat hierbei zwei Parameter. Der erste Parameter gibt an, auf welcher Typ von Wert an regionale Besonderheiten angepasst werden soll, der zweite Parameter gibt dann die Region selber an (bei einem Unix Derivat wäre der Wert DE_de). Aus Gründen die keiner so richtig nachvollziehen kann, haben lauten die Formatierungszeichen anders als bei der Funktion date und haben alle ein führendes Prozentzeichen.

Die Funktion mktime-An welchem Wochentag ist Weihnachten

Wer sich dafür interessiert, zu wissen, an welchem Wochentag Weihnachten ist, kann dies mit diesem Skript tun:

<?
$wochentag = date("l", mktime(0,0,0,12,24,2002));
print $wochentag;
?>

Wir sehen also, dass die Funktion date noch einen zweiten Parameter haben kann, nämlich die Anzahl an Sekunden, unter Windows, die seit dem 1.Januar 1970 bis zum aktuellen Zeitraum verflossen sind (wenn dieser Parameter nicht angegeben wird) oder die Anzahl an Sekunden, die bis zu einem bestimmten Datum verflossen sind. Die Anzahl an Sekunden die vom 1.Januar 1970 bis zum Datum x verflossen sind zu berechnen wäre vorsichtig formuliert mühsam. Das erledigt die Funktion mktime. Sie erhält ihre Parameter in einer etwas ungewöhnlichen Art. Zuerst kommen die Stunden, dann die Minuten, dann die Sekunden, dann die Monate, dann die Tage des Monats, dann das Jahr. Wie man sich die Werte ausdrucken lässt, wird es klarer.

<?
$sekunden = mktime(0,0,0,12,24,2002);
print $sekunden."<br>";

$sekunden = mktime(0,0,1,12,24,2002);
print $sekunden."<br>";

$sekunden = mktime(0,1,0,12,24,2002);
print $sekunden."<br>";

$sekunden = mktime(1,0,0,12,24,2002);
print $sekunden."<br>";
?>

Das Ergebnis sieht dann so aus:
1040684400
1040684401
1040684460
1040688000

Wie deutlich zu erkennen, wird zuerst eine Sekunde, dann eine Minute (60 Sekunden), dann eine Stunde (3600 Sekunden) hinzuaddiert. Mit einer Kombination aus mktime und date lassen sich dann auch alle anderen Operationen, wie z.B. die Differenz zwischen zwei Datumangaben berechnen, durchführen.

vorhergehendes Kapitel