Seite 1 von 1

Logisches Problem bei einem CountDown

Verfasst: 23.06.2003 22:54
von Gonzo_w
Hi Leute!
Wollt mal schnell ein kleines Script für einen Countdown proggen:

Code: Alles auswählen

<?php
$start = mktime(17, 0, 0, 7, 12, 2003);
$jetzt = time();

$sekunden = $start - $jetzt;
$tage = $sekunden / (60 * 60 * 24);
$stunden = bcmod($sekunden, (60 * 60 * 24)) / (60 * 60);

echo number_format($tage, 0) . " Tage, " . number_format($stunden, 0) . " Stunden<br>";
?>
Also wie man hoffentlich erkennen kann, will ich die Tage und Stunden bis zu einem bestimmten Datum anzeigen lassen (im Beispiel 12.07.2003 17 Uhr). Der Anfang is klar, ich lass mir die Sekunden bis zu diesem Datum errechnen. Durch die Division der Sekunden durch die Anzahl der Sekunden eines Tages (60*60*24) erhalte ich die Tage. Der Rest der Division ist gleich der übrigen Sekundenanzahl, diese dann dividiert durch die Sekunden einer Stunde (60*60) müsste dann ja die Stunden ergeben.

Aber es will nicht ganz hinhauen. Manchmal stimmt es, manchmal werden aber irgendwelche Zahlen angezeigt (beim Verändern des zukünftigen Datums).

Wo ist der (offensichtlich logische) Fehler ??

Verfasst: 25.06.2003 22:56
von Gonzo_w
OK bin nun auf die Lösung gekommen. Für alle dies interessiert:

Anstatt number_format() ist floor() zu verwenden, denn ersteres schneidet nicht nur die Nachkommastellen ab, sondern rundet die Zahl (bei Nachkomma größergleich 5) auf. floor() rundet dagegen immer ab (also schneidet einfach die Nachkommastellen ab). :wink:

Verfasst: 25.06.2003 23:57
von Thoman
hmm kann man den bewundern ?
ich habe auch ein counter nur etwas größer der quelltext :)

der zählt die tage stunden min sekunden (sekunden in echtzeit)

Verfasst: 26.06.2003 02:20
von Gast
ein countdown gibt die differenz zu einem zeitpunkt an welcher in der zukunft liegt, daher sollte überprüft werden ob der zeitpunkt bis zum ende des countdowns nicht schon vergangen ist.

isch

Verfasst: 26.06.2003 13:43
von Gonzo_w
Thoman hat geschrieben:hmm kann man den bewundern ?
ich habe auch ein counter nur etwas größer der quelltext :)
der zählt die tage stunden min sekunden (sekunden in echtzeit)
Zu "bewundern" ist er auf meiner Seite, URL in meiner Signatur!
So große Anforderungen hab ich aber gar nicht, mir reichen Tage und Stunden :wink: und Echtzeit muss er auch nicht sein. Der is wirklich ganz simpel, wie der Ultra-Kurz-Code ja beweist.
Anonymous hat geschrieben:ein countdown gibt die differenz zu einem zeitpunkt an welcher in der zukunft liegt, daher sollte überprüft werden ob der zeitpunkt bis zum ende des countdowns nicht schon vergangen ist.
Das ist richtig, da muss ich noch was einbauen. Werd ihn zwar nach Eintreffen des Ereignisses wieder entfernen, aber das müsste ja dann genau sein. Werd irgendwas einbauen wie "JETZT !!!", sobald die Differenz zwischen Zukunft und Jetzt negativ ist!