Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mit einer Zeitangabe rechnen (https://www.delphipraxis.net/77427-mit-einer-zeitangabe-rechnen.html)

StoRmtec 19. Sep 2006 13:21


Mit einer Zeitangabe rechnen
 
Hallo Leute

Ich hätte eine Frage. Und zwar bin ich gerade dabei ein Zeitprogramm zu machen und da bin
ich jetzt auf was gestoßen wo ich nicht mehr weiter komme. Und zwar habe ich eine Ist Zeit
und eine soll Zeit. Die ist Zeit soll von der Soll Zeit abgezogen werden das geht auch nur
wenn ich unter der Soll Zeit bin soll er mir ein "minus" davor setzen. Bei mir rechnet er
einfach aus und macht kein minus davor.

Delphi-Quellcode:
dbedit9.Text := dbedit6.Text;
t:=strtotime(dbedit9.Text) - strtotime(dbedit8.Text);
dbedit7.Text:=formatdatetime('hh:mm',t);
Wie kann ich das machen das er mir zwischen + und - unterscheidet.

Danke

hirnstroem 19. Sep 2006 13:26

Re: Mit einer Zeitangabe rechnen
 
Vorher abfragen, welches Datum das aktuellere ist?

Wenn man mit Daten rechnen kann, kann man sie doch bestimmt auch vergleichen.

Also wenn Datum1 > Datum2 ist dann muss Datum2 - Datum1 ja negativ sein und umgekehrt und in alle anderen Richtungen.

mkinzler 19. Sep 2006 13:27

Re: Mit einer Zeitangabe rechnen
 
Schau dir mal MinutesBetween o.ä aus der Unit DateUtils an.

Timewerte sind Zeitpunkte und keine Zeitspannen und es gibt keine negativen Zeitpunkte.

StoRmtec 19. Sep 2006 13:30

Re: Mit einer Zeitangabe rechnen
 
Danke und wie kann ich dann so was mache das des funktioniert.

Wäre für eine Hilfe sehr dankbar.

Danke
StoRmtec

mkinzler 19. Sep 2006 13:35

Re: Mit einer Zeitangabe rechnen
 
Die Funktion MinutesBetween liefert dir den Unterschied der beiden Zeitwerte in Minuten zurück. mit DIV/MOD kannst du dise adnn in eine Stunden/Minuten darstellung umwandeln.

hirnstroem 19. Sep 2006 13:52

Re: Mit einer Zeitangabe rechnen
 
Ich hätte es jetzt folgendermassen und relativ umständlich gemacht, sollte aber leicht nachzuvollziehen sein:

Delphi-Quellcode:

var
  t: TTime;
begin
if StrToTime(dbedit9.Text) > StrToTime(dbedit8.Text) then
begin
  t := StrToTime(dbedit8.Text) - StrToTime(dbedit9.Text);
  dbedit7.Text := '-' + TimeToStr(t);
end
else if StrToTime(dbedit9.Text) < StrToTime(dbedit8.Text) then
begin
  t := StrToTime(dbedit8.Text) - StrToTime(dbedit9.Text);
  dbedit7.Text := TimeToStr(t);
end;
Ansonsten:


Delphi-Quellcode:

var
  t: TDateTime;
begin
  dbedit7.Text := DateTimeToStr(DateUtils.MinutesBetween(StrToDateTime(dbedit8.Text), StrToDateTime(dbedit9.Text)));
end;
Hier müsstest du lediglich noch darauf achten das zuerst das jetzt kommt und dann das dann -.-

StoRmtec 19. Sep 2006 15:38

Re: Mit einer Zeitangabe rechnen
 
Hallo hirnstroem

Wenn ich das erste ausführe dann bekomme ich immer eine Fehlermeldung das " not valid time format

StoRmtec 19. Sep 2006 15:52

Re: Mit einer Zeitangabe rechnen
 
Hat sich schon erledigt danke
Habe eine Zeile gelöscht

Danke
StoRMtec


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 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