Berechnung der Dauer zwischen zwei Zeitpunkten
Will man eine Dauer zwischen zwei Punkten errechnen, stößt man anfangs an seine Grenzen.Dieses Tutorial erklärt, wie man mit Hilfe von einer Differenz die Dauer zwischen zwei Zeitpunkten errechnen und in Jahre, Monate, Tage, ... umrechnen kann.
Um die Dauer zwischen zwei Zeitpunkten zu berechnen, eignet sich die Funktion mktime() sehr gut.
| PHP-Datei: | |
1 |
<?
|
Mit diesem kleinen Script errechnet man die Sekunden, die bis zum Ereignis noch vor uns liegen: time() ermittelt die Sekunden vom 1.1.1970 bis jetzt, mktime() ermittelt die Sekunden, die vom 1.1.1970 bis zum Ereignis vergangen sein werden.
Ermittelt man davon die Differenz, so hat man die Sekunden, die von jetzt noch bis zum Ereignis vergehen werden.
Nun hat man eine Zahl heraus, man will aber nicht die Anzahl der Sekunden, sondern diese umgerechnet in Jahre, Monate, Tage, Stunden, Minuten, Sekunden haben.
Dies erledigt folgende Funktion:
| PHP-Datei: | |
1 |
<?
|
Diese liefert als Ergebnis die ihr übergebene Zahl als einen Array zurück: Index 0 sind die Jahre, 1 sind die Monate, 2 die Tage und weiter so abgestuft.
Zur richtigen Jahresberechnung wird erst ermittelt, ob dieses Jahr ein Schaltjahr oder nicht ist und entsprechend die Tage als ein Jahr genommen.
Der einzige kleine Fehler, den diese Funktion hat, ist, dass die Monate nicht exakt berechnet werden könnten. Da einige Monate 30, andere 31 und wiederum andere 28 (bzw. 29) Tage besitzen, kann es hier in Ausnahmefällen zu kleinen Umrechnungsfehlern kommen. Um diesem möglichst gut entgegen zu wirken, multipliziert man mit dem Schnittwert von 30,5 Tagen pro Monat.
Das wars.
Nun noch einmal das gesamte Script, in einem Blick mit Anwendungsbeispiel:
| PHP-Datei: | |
1 |
<?
|
Geschrieben von Phil Marx am 18.06.2004 (7456x gelesen)

Tauscht man in Zeile 42
$differenz=$ereignis-$jetzt;
um in
$differenz=$jetzt-$ereignis;
so hat man das Script umfunktioniert zu einem Script, was einem das Alter ausrechnet... :)
$differenz=$ereignis-$jetzt;
um in
$differenz=$jetzt-$ereignis;
so hat man das Script umfunktioniert zu einem Script, was einem das Alter ausrechnet... :)
Geschrieben von Phil Marx
