![]() |
Countdown (Monate / Tage / Stunden / Minuten / Sekunden)
Hallo Leute!
Ich versuche mich seit nunmehr einem Tag daran einen Countdown zu programmieren, um die Zeitkomponenten in Delphi besser verstehen zu können. Ich habe dazu gegoogelt und bei euch im Forum gestöbert, allerdings habe ich noch immer ein großes Fragezeichen im Kopf. EncodeDateTime / DecodeDateTime und FormatDateTime hat mir nichts gebracht. :wall: Ziel ist folgendes: Ich habe ein Formular und einen Timer (Intervall 1000 ms). Ich habe einen Tag in der Zukunft 29.09.2006 15:30:00.0 und nun möchte ich die Differenz zwischen Now() und diesem Datum ausgewiesen bekommen (aktualisiert per Intervall). das wären jetzt (08.08.2006 08:52:32.0) x Monate / x Tage / x Stunden / x Minuten / x Sekunden. Alles was ich bislang errechnet habe ich voll fürn Ar... . Bitte um Hilfe! Mfg Thomas |
Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)
wie berechnest du denn?
vielleicht kennst du div und mod? |
Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)
Hallo Thomas,
ersteinmal kannst Du Dein Termin der in der Zukunft liegt in eine float umwandeln, das geht mit StrToDateTime Du kannst dann die Differenz zu now berechnen. Der ganzzahlige Anteil beschreibt die Anzahl der 24 Stunden Intervalle (Tage) Aus der Hilfe: The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. The fractional part of a TDateTime value is fraction of a 24 hour day that has elapsed. Damit kannst Du dann weiter rechnen. Die Angabe von Monaten würde ich mir sparen, da die Monate eh nicht konstant lang sind. Sie sind keine feste Größe der Zeit, das sind nur Tage, Minuten... Grüße Kalus |
Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)
Also.. EncodeDateTime:
![]() Du packst da also den Tag in der Zukunft rein und bekommst ein TDateTime zurück:
Delphi-Quellcode:
Nun ist die Differenz die Anzahl an Millisekunden zwischen diesen Tagen. Mit DecodeDateTime bekommst Du aber das Datum/die Zeit die diese Anzahl an Millisekunden vom Datum '0' entfernt ist. Das hilft Dir also nicht.
var
irgendwann, Differenz: TDateTime; beginn irgendwann := EncodeDateTime(2007, 01, 17, 20, 44, 0, 0); Differenz := irgendwann - now(); end; Du musst diese Zahl die Du dann da hast z.B. durch 86400000 Teilen um die Anzahl der Tage zu bekommen die da drin stecken (1000ms * 60 = sek. * 60 = Min. * 60 = Stunden * 24 = Tage). Also mit Div und Mod für den Rest bist Du schon gut beraten. |
Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)
hast Du dir mal die Unit "DateUtils" und in der Delphi-Hilfe die Kategorie "Datum/Zeit" angeschaut?
Dort gibt es jede Menge Funktionen, um Zeit/Datum-Werte zu manipulieren / auszuwerten... |
Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)
Willkommen in der Delphi-PRAXiS, Thomas!
Zitat:
Wie Klaus schon richtig bemerkte, ist es nicht sinnvoll, die Anzahl Monate auszugeben. Den Bruchteil kann man sehr einfach mit DecodeTime decodieren:
Delphi-Quellcode:
Gruß Hawkeye
var irgendwann : TDateTime;
Differenz : TDateTime; h, m, s, ms : Word; begin irgendwann := StrToDateTime('29.09.2006 15:30:00.0'); Differenz := irgendwann - Now; DecodeTime (Differenz, h, m, s, ms); Label1.Caption := Format('%d Tage, %d Stunden, %d Minuten, %d Sekunden', [Trunc(Differenz), h, m, s]); |
Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)
Zitat:
|
Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)
Ich habe schon vor einiger Zeit ein Countdown Programm veröffentlicht:
![]() Wenn du das als Grundlage nimmst, bist du fast schon fertig. |
Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)
@ shmia :
Er sollte es doch vielleicht erst selber probieren ;) Ich hab delphi besser gelernt indem ich es mir selbst herbeigeführt habe und euch bei fragen die PRÄZISE frage gestellt (mit nem codefetzen zusammen). Ich würde dir (thomasd) also raten es erst selber nochmal zu probieren. gute vorschläge gibt's ja schon :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz