|

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.
|
 |