yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Datumsfunktionen



Bevor wir mit Datumsfunktionen arbeiten, gehe ich erstmal auf grundsätzliches ein: Datumsfunktionen werden mit so genannten UNIX-Timestamps gefüttert, diese geben die Anzahl in Sekunden seit Beginn der UNIX-Epoche wieder, die am 01.01.1970 um 00:00 Uhr GMT begann. Den gegenwärtigen Timestamp können wir mit time() ermitteln. Für genauere Zeiten (bspw. Ladezeit der Seite ermitteln, in diesem Tutorial erklärt), greifen wir auf die Funktion microtime() zurück - diese liefert uns die Anzahl in Millisekunden seit dem 01.01.1970 00:00 Uhr GMT.

Soweit die Theorie, nun zur Praxis: was zum Henker kann man alles damit anfangen? Wozu braucht man das? Warum so ein langer Integerwert, der auch noch Sekunden darstellen soll?
Nun, die Fragen sind eigentlich recht einfach zu beantworten: man kann damit Zeiten speichern, das Integer ist so lange, weil es eben Sekunden sind, und es sind Sekunden, weil man damit auch genaue Zeitangaben machen kann.

Um einen UNIX-Timestamp formatiert auszugeben, greifen wir auf die Funktion date() zurück - dies ist eigentlich auch eine der beiden mächtigsten Datumsfunktionen - man kann dadurch nahezu alles erfahren. Die Funktion date() benötigt mindestens den ersten Paramter, damit der Parser auch weiß, wie er das Datum ausgeben soll. Wird der zweite Parameter (Timestamp) weggelassen, so wird der aktuelle Timestamp zur Datumsformatierung genutzt. Eine Übersicht sämtlicher Formatierungsparameter gibt es im PHP Manual.

Sehen wir uns mal das folgendes Beispiel an:
PHP-Datei:
1
2
3
4
5
<?php
$timestamp 
time();
$datum date(d.m.Yh:i$timestamp);
echo 
$datum;
?>


Dieses Beispiel, würde das aktuelle Datum in folgender Form ausgeben: dd.mm.yyyy, hh:mm - das ist nur ein Beispiel für vieles, was damit möglich ist. Ein Beispiel aus meinem Counter, der die Besucher dieser Woche anzeigt füge ich jetzt noch hinzu, da das schon etwas schwieriger ist - ich will euch aber nur zeigen, dass es möglich ist:
Timestamp des ersten Tages der Woche:
1
2
3
4
5
6
7
<?php
$heute 
mktime(000);
$tag date("w"$heute)-1;
if(
$tag == -1)
    
$tag 6;
$woche $heute-$tag*3600*24;
?>


Ziel hier ist es, den Timestamp des ersten Wochentages (Montag) um 00:00 Uhr zu erhalten. In diesem Beispiel sehen wir auch eine neue Funktion: mktime(). Sie dient dazu, den Timestamp eines gewissen Datums zu ermitteln - Parameter können von links nach rechts weggelassen werden. Falls ein Parameter nicht angegeben wird, so werden die aktuellen Daten benutzt. Im obigem Beispiel erzeugen wir einen Timestamp des heutigen Tages um 00:00 Uhr. Mittels der Funktion date() finden wir den aktuellen Tag heraus (numerisch; 0 = Sonntag, 6 = Samstag) - von dem Ergebnis, das zwischen 0 und 6 liegt, ziehen wir 1 ab, damit wir Montag auf 0 und Sonntag - nach der if-Abfrage auf 6 haben. Um dann endgültig den ersten Timestamp dieser Woche zu bekommen, subtrahieren wir vom heutigen Timestamp den Wochentag*24 Stunden.

Zum Abschluss noch ein einfaches Beispiel um an den Timestamp von gestern zu gelangen:
PHP-Datei:
1
2
3
4
5
<?php
$heute 
mktime(000);
$gestern $heute-3600*24:
echo 
'Gestern war der '.date("d.m.Y"):
?>


Ich hoffe ich konnte euch damit die Datumsfunktionen ein bisschen näher bringen, und ihr versteht jetzt auch ein bisschen was davon - ich kann euch immer nur empfehlen: lest das PHP Manual, dort wird euch oft schneller und vor allem kompetenter geholfen als im Supportforum...



Weiterführende Links:
time()
microtime()
date()
mktime()
Übersicht der Datumsfunktionen

Geschrieben von michi am 13.08.2004 (7853x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren