Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zeitdifferenz berechnen (negativwert) (https://www.delphipraxis.net/160986-zeitdifferenz-berechnen-negativwert.html)

StoRmtec 10. Jun 2011 20:10

Datenbank: SQL • Version: 2008 • Zugriff über: ADO

Zeitdifferenz berechnen (negativwert)
 
Hallo Leute

Habe eine Frage und zwar errechne ich eine Zeit was auch schon sehr gut geht aber ich komme einfach nicht weiter.
Würde gerne auch negativ Werte haben zB -00:03 min bekomme aber immer nur 00:03 egal ob minus oder plus. Wir kann ich das machen

Danke

Delphi-Quellcode:
 DB_AZ.Text := formatDatetime('hh:mm',strtotime(DB_AZende.Text)-strtotime(DB_AZbeginn.Text)-strtotime(DB_Pause.Text));
 DB_ZA.Text := formatDatetime('hh:mm',strtotime(DB_SOLL.text)-strtotime(DB_AZ.Text));

Teekeks 10. Jun 2011 20:12

AW: Zeitdifferenz berechnen (negativwert)
 
Delphi-Quellcode:
DB_ZA.Text := '-'+formatDatetime('hh:mm',strtotime(DB_SOLL.text)-strtotime(DB_AZ.Text));
?

StoRmtec 10. Jun 2011 20:20

AW: Zeitdifferenz berechnen (negativwert)
 
Danke für die Antwort aber er soll natürlich nur das - machen wenn er auch minus stunden hat.

danke

Uwe Raabe 10. Jun 2011 20:29

AW: Zeitdifferenz berechnen (negativwert)
 
Delphi-Quellcode:
function FormatDateTimeSigned(const Format: string; DateTime: TDateTime): string;
begin
  result := SysUtils.FormatDateTime(Format, abs(DateTime));
  if DateTime < 0 then
    result := '-' + result;
end;

Teekeks 10. Jun 2011 20:33

AW: Zeitdifferenz berechnen (negativwert)
 
Wobei ich die Variable nicht DateTime nennen würde, es gibt schließlich eine gleichnamige Variable in den DateUtills

StoRmtec 10. Jun 2011 20:37

AW: Zeitdifferenz berechnen (negativwert)
 
danke aber wie binde ich das ein
habe irgendwie gerade ein blackput glaube ich

danke

himitsu 10. Jun 2011 20:51

AW: Zeitdifferenz berechnen (negativwert)
 
PS: Schau dir mal die Definition vom TDateTime an.

Der Nachkommateil ist die Uhrzeit.
> Uhrzeiten sind immer positiv

StoRmtec 10. Jun 2011 21:25

AW: Zeitdifferenz berechnen (negativwert)
 
habe es jetzt so hinbekommen

Delphi-Quellcode:
 if StrToTime(DB_SOLL.Text) > StrToTime(DB_AZ.Text) then
begin
  x := StrToTime(DB_AZ.Text) - StrToTime(DB_SOLL.Text);
  DB_ZA.Text := '-' + TimeToStr(x);
end
else if StrToTime(DB_AZ.Text) < StrToTime(DB_SOLL.Text) then
begin
  x := StrToTime(DB_SOLL.Text) - StrToTime(DB_AZ.Text);
  DB_ZA.Text := TimeToStr(x);
nur habe ich noch ein Problem und zwar zeigt er mir die ausgabe in 00:00:00 an sollte aber 00:00 sein wie kann ich das umstellen noch

danke

himitsu 10. Jun 2011 21:51

AW: Zeitdifferenz berechnen (negativwert)
 
Zitat:

Zitat von StoRmtec (Beitrag 1105757)
nur habe ich noch ein Problem und zwar zeigt er mir die ausgabe in 00:00:00 an sollte aber 00:00 sein wie kann ich das umstellen noch

Dann schauen wir mal in die OH > Delphi-Referenz durchsuchenTimeToStr (hättest'e auch selber machen können)
und was sehen wir?

Ach, StrToTime und TimeToStr nutzen die Systemeinstellungen vom Windows.
PS: Anderes Land, bzw. andere Spracheinstellung und dein Programm macht eventuell nicht mehr, was es soll.

Lösungen:
> Die Systemeinstellung vom Windows/Benutzer verändern. (kommt nicht immer so gut an, wenn man einfach so daran rumschraubt)
> FormatSettings des Programms anpassen. (Achtung, das kann vom system auch mal wieder überschrieben werden)
> Den zweiten Parameter dieser Funktionen nutzen?
> Oder wieder die alternative Funktionen verwenden, wie z.B. Delphi-Referenz durchsuchenFormatDateTime.

StoRmtec 10. Jun 2011 22:16

AW: Zeitdifferenz berechnen (negativwert)
 
aber das komische ist wenn ich einen positiven wert habe dann stimmt die zeit mit 00:00 beim negativen macht er dann -00:00:00 raus.

danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:50 Uhr.
Seite 1 von 2  1 2      

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