Logisches Problem bei einem CountDown

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Gonzo_w
Mitglied
Beiträge: 58
Registriert: 15.10.2002 16:02
Wohnort: Wien
Kontaktdaten:

Logisches Problem bei einem CountDown

Beitrag 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 ??
Wer nicht wettet, hat schon verloren .... www.bet-austria.com
Die österreichische phpBB Usergruppe!
Benutzeravatar
Gonzo_w
Mitglied
Beiträge: 58
Registriert: 15.10.2002 16:02
Wohnort: Wien
Kontaktdaten:

Beitrag 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:
Wer nicht wettet, hat schon verloren .... www.bet-austria.com
Die österreichische phpBB Usergruppe!
Thoman
Mitglied
Beiträge: 303
Registriert: 26.12.2002 16:21
Kontaktdaten:

Beitrag 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)
Gast

Beitrag 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
Benutzeravatar
Gonzo_w
Mitglied
Beiträge: 58
Registriert: 15.10.2002 16:02
Wohnort: Wien
Kontaktdaten:

Beitrag 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!
Wer nicht wettet, hat schon verloren .... www.bet-austria.com
Die österreichische phpBB Usergruppe!
Antworten

Zurück zu „Coding & Technik“