![]() |
Zeitberechnung eigentlich simpel, aber wie?
hy ich muss für meine Applikation eine simple Zeitberechnung anstellen.
Ich soll ausrechnen wieviele Stunden und Minuten zwischen zwei gegebenen Zeiten liegen! Die Zeiten werden im 24h Format angegeben. Hier ein Beispiel: von(gegeben) bis(gegeben) dazwischen(berechnen) 22:30 02:11 03:41 jmd schon mal gemacht? |
Re: Zeitberechnung eigentlich simpel, aber wie?
StrToDate bzw. StrToDateTime
Zeit-bis - Zeit-von = Zeit-dazwischen (bei zeit-bis und zeit-von noch einen Tag mitangeben (vorkommaanteil) wegen der überschreitung der 24Uhr grenze) |
Re: Zeitberechnung eigentlich simpel, aber wie?
das ist ja genau mein problem...
der Anwender soll das nicht angeben müssen, das Programm soll das selber merken... ah, oder soll ich das so machen. wenn von > bis dann ist bis einen Tag später?! |
Re: Zeitberechnung eigentlich simpel, aber wie?
Hi
Einfach mal die Suchfunktion nutzen und ![]() |
Re: Zeitberechnung eigentlich simpel, aber wie?
Danke hat bestens funktioniert. Ich hab ja auch gesucht, nur nichts gefunden...
danke danke daaannnnkee |
Re: Zeitberechnung eigentlich simpel, aber wie?
Zitat:
Delphi-Quellcode:
abs(a-b)
|
Re: Zeitberechnung eigentlich simpel, aber wie?
Abs?
tja auf jeden fall hatte ich mit dieser Aussage recht und es funktioniert jetzt auch so.. |
Re: Zeitberechnung eigentlich simpel, aber wie?
![]() Edit: Das bedeutet übrigens, dass du in die Delphi-Hilfe schauen sollst. Die hilft dir bei solchen Fragen gerne weiter. |
Re: Zeitberechnung eigentlich simpel, aber wie?
OH:
Abs (Funktion) Beschreibung Abs gibt den absoluten Wert des Arguments X zurück. X ist ein Ausdruck des Typs Integer oder Real. |
Re: Zeitberechnung eigentlich simpel, aber wie?
oh, :oops: , ja danke
|
Re: Zeitberechnung eigentlich simpel, aber wie?
:twisted: :mrgreen:
|
Re: Zeitberechnung eigentlich simpel, aber wie?
Hallo,
ob Abs() wirklich das geeignete Mittel ist? Zwischen den im ersten Beitrag angegebenen Zeitpunkten liegt ein Zeitraum von 3:41 h, und nicht etwas 20:19 h (vorausgesetzt, der zweite Zeitpunkt liegt hinter dem ersten). Wenn kein Datum angegeben werden soll, muß das Programm diese Intelligenz einbringen, wie es im 2. und 3. Beitrag schon angedeutet wurde:
Delphi-Quellcode:
Gruß Hawkeye
var
DT1, DT2 : TDateTime; begin DT1 := StrToTime(edFrom.Text); DT2 := StrToTime(edTo.Text); labDifference.Caption := TimeToStr(DT2 - DT1 + Ord(DT2 < DT1)); end; |
Re: Zeitberechnung eigentlich simpel, aber wie?
:gruebel: hmmm ..
ok .. habich wohl zu schnell gepostet und zu wenig gedacht :oops: |
Re: Zeitberechnung eigentlich simpel, aber wie?
meine Funktion sieht nun so aus, hab Sie Gröstenteils
übernommen:
Delphi-Quellcode:
Es hesisst ja man soll nie eine "Fremdfunktion" verwenden, wenn man nicht genau weis was da passiert...
function TFrameDaten.Act_TimeBetween(von, bis : String): TDateTime;
var H,M: integer; R: Real; start,ende: TDateTime; begin start := StrToDateTime(von); ende := StrToDateTime(bis); if start > ende then ende:= IncDay(ende); R:= HourSpan(start,ende); H:= Round(Int(R)); // Stunden M:= Round(Frac(R)* 60); // Minuten if M = 60 then begin // aus 60 Min wird 1 volle Stunde M:= 0; Inc(H); end; result := StrToDateTime(Format('%d:%.2d',[H, M])); end; na ja, also ich kappier alles voll und ganz ausser: kann mir jmd sagen was die Parameter '%d:%.2d' bei dieser Funktion GENAU machen Format('%d:%.2d',[H, M])); ?? ungefähr weisichs ja nur kanns mal jmd GANZ GENAU erklären? das würde mich beeindrucken... |
Re: Zeitberechnung eigentlich simpel, aber wie?
Zitat:
d - Dezimalwert : - TimeSeperator 2d - Dezimalwert (mind. 2-stellig; aus '5' wird bspw. '05' siehe auch ![]() ![]() LG Mario |
Re: Zeitberechnung eigentlich simpel, aber wie?
An dieser Stelle sei auch mal auf drei tolle Funktionen der Unit DateUtils hingewiesen:
Delphi-Quellcode:
Und ja, sie machen genau das, was man denkt, was sie machen könnten... :mrgreen:
function DaysBetween(const ANow, AThen: TDateTime): Integer;
function HoursBetween(const ANow, AThen: TDateTime): Int64; function MinutesBetween(const ANow, AThen: TDateTime): Int64; |
Re: Zeitberechnung eigentlich simpel, aber wie?
Hallo Daniel,
Zitat:
Gruß Hawkeye |
Re: Zeitberechnung eigentlich simpel, aber wie?
Also wenn ich das Recht verstehe soll er sagen ob zweischen Datum1 und Datum 2 ein Tagwechsel vorliegt oder?
Ich würde das so machen
Delphi-Quellcode:
if (Trunc(Datum1)<Trunc(Datum2))then
ShowMessage('Es liegt ein Tagwechsel vor') else ShowMessage('Die beide Daten sind am gleichen Tag'); |
Re: Zeitberechnung eigentlich simpel, aber wie?
Zitat:
|
Re: Zeitberechnung eigentlich simpel, aber wie?
Tach ...,
Zitat:
Delphi-Quellcode:
if start > ende then
ende:= IncDay(ende); Zitat:
[oh]function HourSpan(const ANow, AThen: TDateTime): Double;[/oh] LG Mario |
Re: Zeitberechnung eigentlich simpel, aber wie?
Also nochmals vielen Dank euch allen
und ein recht schönes Wochenende allerseits! Gruss enemyleft |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 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