AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Countdown (Monate / Tage / Stunden / Minuten / Sekunden)
Thema durchsuchen
Ansicht
Themen-Optionen

Countdown (Monate / Tage / Stunden / Minuten / Sekunden)

Ein Thema von thomasd · begonnen am 8. Aug 2006 · letzter Beitrag vom 17. Aug 2006
Antwort Antwort
thomasd

Registriert seit: 8. Aug 2006
1 Beiträge
 
#1

Countdown (Monate / Tage / Stunden / Minuten / Sekunden)

  Alt 8. Aug 2006, 07:55
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.



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
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#2

Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)

  Alt 8. Aug 2006, 08:12
wie berechnest du denn?
vielleicht kennst du div und mod?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)

  Alt 8. Aug 2006, 08:16
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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#4

Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)

  Alt 8. Aug 2006, 08:21
Also.. EncodeDateTime: http://www.dsdt.info/referenz/kategorie/?id=270

Du packst da also den Tag in der Zukunft rein und bekommst ein TDateTime zurück:
Delphi-Quellcode:
var
  irgendwann, Differenz: TDateTime;
beginn
  irgendwann := EncodeDateTime(2007, 01, 17, 20, 44, 0, 0);
  Differenz := irgendwann - now();
end;
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.

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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)

  Alt 8. Aug 2006, 08:28
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...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)

  Alt 8. Aug 2006, 08:39
Willkommen in der Delphi-PRAXiS, Thomas!

Zitat von Phoenix:
Nun ist die Differenz die Anzahl an Millisekunden zwischen diesen Tagen.
Nicht ganz richtig, oder? In Differenz steht die Zeitspanne zwischen den beiden Daten in Tagen, der Nachkommaanteil gibt dabei den Bruchteil eines Tags an.

Wie Klaus schon richtig bemerkte, ist es nicht sinnvoll, die Anzahl Monate auszugeben. Den Bruchteil kann man sehr einfach mit DecodeTime decodieren:

Delphi-Quellcode:
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]);
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)

  Alt 17. Aug 2006, 17:19
Zitat:
[Trunc(Differenz), h, m, s]);
imho nach gibt die variable "N" die Minuten an und "M" ist für was anderes zuständig
Robin W.
Ein Computer kann (fast) alles.... Man muss es ihm nur beibringen
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)

  Alt 17. Aug 2006, 18:27
Ich habe schon vor einiger Zeit ein Countdown Programm veröffentlicht:
http://www.delphipraxis.net/internal...ct.php?t=62090
Wenn du das als Grundlage nimmst, bist du fast schon fertig.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von netscanner
netscanner

Registriert seit: 2. Dez 2005
Ort: Dieburg
280 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Countdown (Monate / Tage / Stunden / Minuten / Sekunden)

  Alt 17. Aug 2006, 19:01
@ 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
Martin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz