PHP-Tutorial

Datum und Zeitberechnungen mit PHP

Gurkcity-Webdesign-Tutorial:

Datum und Zeit in PHP, praktische Anwendungen mit Beispielen:

In PHP sind einige Funktionen zu Datum und Zeit integriert. Diese Tutorial soll erst eine kurze Übersicht über die wichtigsten Funktionen geben und später in kurzen Beispielen die praktische Anwendung dieser zeigen.

1) wichtige PHP-Funktionen zu Datum und Zeit

time() - gibt die aktuelle Zeit als sog. Unix-Zeitstempel zurück
mktime() - gibt einen Unix-Zeitstempel zu einem gegebenen Datum zurück
date() - formatiert ein angegebenes Datum
checkdate() - überprüft ein angegebenes Datum auf dessen Gültigkeit


2) Beispiele zu Datum und Uhrzeit in PHP

a) Countdown zu einem angegebenen Zeitpunkt, z.B. Geburtstag, Neujahr o.ä.

Sie benötigen für einen Countdown zwei Zeitdaten:
- das aktuelle Datum und
- das Datum zu dem Countdown hin zählen soll

Das aktuelle Datum speichern Sie in eine Variable und benutzen dabei die time()-Funktion:
$date_aktuell = time();
Wir bekommen mit time() den aktuellen UNIX-Zeitstempel zurück. Das ist die Anzahl der Sekunden seit dem 1.1.1970 - 0 Uhr, dem Beginn der UNIX-Epoche. Im jetzigen Moment sind es z.B. 1108586639 Sekunden. Jetzt können Sie ausrechnen, wann dieses Tutorial geschrieben wurde, oder aber die Funktion date() aus PHP zu Hilfe nehmen:
echo date("d.m.Y, H:i:s",time());
echo date("d.m.Y, H:i:s",1108586639);

date() erfordert verschiedene Formatierungsstrings, z.B.:
- d für Tage (2-stellig)
- m für Monate (2-stellig)
- Y für Jahre (4-stellig)
- H für die Stunden (2-stellig)
- i für Minuten (2-stellig)
- s für Sekunden (2-stellig)
Weitere Formatierungsmöglichkeiten sind im PHP-Handbuch nachzulesen.

Wir benötigen noch das Datum für den Countdown-Zeitpunkt, z.B. Neujahr 2006, der 01.01.2006.
Mithilfe der Funktion mktime() lässt sich jedes beliebige Datum in einen UNIX-Zeitstempel umwandeln. Die Anordnung der Argumente sollte unbedingt beachtet werden, da sonst Fehler vorprogrammiert sind:

int mktime ( [int Stunde [, int Minute [, int Sekunde [, int Monat [, int Tag [, int Jahr [, int is_dst]]]]]]])

Wir setzen den Zeitstempel für Neujahr 2006:

$timestamp = mktime(0, 0, 0, 1, 1, 2006);

Wir können das Datum mit der Funktion date() nochmals überprüfen:
echo date("d.m.Y, H:i:s",mktime(0, 0, 0, 1, 1, 2006));

Die zwei Daten (aktuelles Datum und den Zeitstempel von Neujahr) sind beides Zeitstempel in Sekunden und müssen nur voneinander abgezogen werden:

$differenz = $timestamp - $date_aktuell;

Die Variable $differenz wird in Sekunden angegeben. In Tagen müssen die Sekunden durch 86400 (24*60*60) geteilt werden.

$diff_tage = $differenz / 86400;

Um noch die Ausgabe in ganzen Tagen zu formatieren benutzen wir die PHP-Funktion floor(), um die Tage abzurunden:

floor($diff_tage);

Und hier das komplette Listing:

<?php
$date_aktuell = time();
$timestamp = mktime(0, 0, 0, 1, 1, 2006);
$differenz = $timestamp - $date_aktuell;
$diff_tage = $differenz / 86400;
echo floor($diff_tage);
?>

oder als Kurzfassung:

<?php
echo floor((mktime(0, 0, 0, 1, 1, 2006) - time()) / 86400);
?>


b) Welches Datum haben wir morgen/übermorgen?

echo $morgen = date("d.m.Y",mktime(0, 0, 0, date("m"), date ("d")+1, date("Y")));
echo $uebermorgen = date("d.m.Y",mktime(0, 0, 0, date("m"), date ("d")+2, date("Y")));

Morgen: 29.03.2024
Übermorgen: 30.03.2024

Sie haben keine Zeit oder Ihnen fehlt das Fachwissen zur professionellen Gestaltung Ihrer dynamischen Internet-Seiten? Dann wenden Sie sich doch einfach an uns, wir gestalten Ihre Webseiten dynamisch mit PHP-Webdesign.

Chris Gurk von Gurkcity Webdesign (www.gurkcity.de)



Links zum Thema:

Das PHP-Handbuch - http://www.php.net/docs.php
FAQ der Newsgroups de.comp.lang.php.* - http://www.php-faq.de/

//© 2005 by Gurkcity Webdesign - www.gurkcity.de

//Verwendung des Tutorials nur unter Angabe eines Links/ Querverweises auf www.gurkcity.de erlaubt