Autor Beitrag
basti_1984
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
BeitragVerfasst: Do 01.02.07 11:31 
Hallo ich habe folgendes Problem :
ich möchte die Differenz zwischen zwei zeiten ermmittel´n.
Ich lese die Zeiten aus einem Stringgrid aus, und wandle sie mittels strtotime um. das geht auch gut. die differernz zwischen den beiden ermittle ich mittels zeit1 - zeit2 das geht auch . aber wenn zeit1 kleiner ist als zeit2 bekomme ich die absolute differenz zwischen den beiden zeiten und nicht den negativen wert .
kann mir jemand helfen. danke
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 01.02.07 11:34 
Was meinst du mit negative Zeit? Das ist doch einfach nur -1 mal die positive?
// EDIT:
Ach so: Du nimmst TimeToStr oder so? Da bekommst du immer einen positiven Wert, das hat aber nix mit der Berechnung zu tun. Wenn du sowas wie -12:34:10 haben willst, dann musst du das - selbst davor setzen, indem du prüfst, welcher Wert kleiner ist.


Zuletzt bearbeitet von jaenicke am Do 01.02.07 11:40, insgesamt 1-mal bearbeitet
basti_1984 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
BeitragVerfasst: Do 01.02.07 11:39 
user profile iconjaenicke hat folgendes geschrieben:
Was meinst du mit negative Zeit? Das ist doch einfach nur -1 mal die positive?


erst mal danke für deine schnelle antwort:
hier mein beispielcode
ausblenden Delphi-Quelltext
1:
2:
3:
4:
   
sollzeit:= StrToTime('3:29:00') - StrToTime('8:00');;
sollzeit:= (-1)*sollzeit;
ShowMessage(TimeToStr(sollzeit));


Leider gibt er keine negative aus.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 01.02.07 11:41 
Ah, richtig vermutet. TimeToStr gibt grundsätzlich nur positive Werte aus.
Da musst du das - ggf. selbst davor setzen.
basti_1984 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
BeitragVerfasst: Do 01.02.07 11:45 
user profile iconjaenicke hat folgendes geschrieben:
Ah, richtig vermutet. TimeToStr gibt grundsätzlich nur positive Werte aus.
Da musst du das - ggf. selbst davor setzen.

Okay dann habe ich ein Problem.
Vielen Dank für deine nachforschungen.
basti_1984 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
BeitragVerfasst: Do 01.02.07 11:47 
Gibt es vielleciht einen anderen Datentyp, der das kann.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 01.02.07 11:58 
Bastel Dir doch einfach eine eigen Funktion dafür. Hier mal ein ungeprüftes Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Function MyTimeToStr(t : TTime) : String;
begin
  result := TimeToStr(t);
  if t < 0 then
    result := '-' + result;
end;
basti_1984 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
BeitragVerfasst: Do 01.02.07 12:18 
user profile iconjasocul hat folgendes geschrieben:
Bastel Dir doch einfach eine eigen Funktion dafür. Hier mal ein ungeprüftes Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Function MyTimeToStr(t : TTime) : String;
begin
  result := TimeToStr(t);
  if t < 0 then
    result := '-' + result;
end;


das ist zwar eine gute idee. aber es geht nicht. ich will mehrer zeiten mit einander addrieren (Zeitdifferenzen) und wenn ich zwischendrin eine "negative zeit" rechnet er mit der positiven zeit wieter. außerdem wnadelt er eine zeit (-3:10:00) nicht in ein Datetime um.
ich will es jetzt so versuchen. ich berechne mitr aus jeder zeit einen integerwert .dieser ist die summe aus stunden in minuten und minuten . mit diesem wert kann ich dann rechnen. am ende wandle ich die ganze zeit wieder ins date time fromat ( oder gleci in einen string um). meinst das ist sinnvoll.

_________________
Wissen ist Macht. Nichts zu Wissen macht auch nichts
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 01.02.07 12:31 
Nein, das ist nicht sinnvoll, denn Rechnen kannst du mit den DateTime-Werten ganz normal. Das sind normale Fließkommazahlen!!
Erst TimeToStr wandelt das nicht so um, wie du es gerne hättest.

user profile iconbasti_1984 hat folgendes geschrieben:
das ist zwar eine gute idee. aber es geht nicht. ich will mehrer zeiten mit einander addrieren (Zeitdifferenzen) und wenn ich zwischendrin eine "negative zeit" rechnet er mit der positiven zeit wieter.

Nein! Rechnen tut er mit der negativen Zahl.
basti_1984 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
BeitragVerfasst: Do 01.02.07 12:38 
user profile iconjaenicke hat folgendes geschrieben:
Nein, das ist nicht sinnvoll, denn Rechnen kannst du mit den DateTime-Werten ganz normal. Das sind normale Fließkommazahlen!!
Erst TimeToStr wandelt das nicht so um, wie du es gerne hättest.

user profile iconbasti_1984 hat folgendes geschrieben:
das ist zwar eine gute idee. aber es geht nicht. ich will mehrer zeiten mit einander addrieren (Zeitdifferenzen) und wenn ich zwischendrin eine "negative zeit" rechnet er mit der positiven zeit wieter.

Nein! Rechnen tut er mit der negativen Zahl.


Okay das hat mir sehr geholfen. danke dann ist es doch gar nicht so schwierig.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 01.02.07 12:39 
Oder anders ausgedrückt:
Höre einfach auf, ständig alles hin und her zu wandeln. Rechne erst und am Schluß wandelst Du das Ergebnis. Und zu Dem Problem mit der Umwandlung einer negativen Zeit (als String) wieder in einem TTime-Wert: Auch dafür kann man sich eine eigene Funktion schreiben. Die dürfte nicht länger sein, als mein Beispiel.

EDIT:
Zu langsam.
basti_1984 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
BeitragVerfasst: Do 01.02.07 12:56 
user profile iconjasocul hat folgendes geschrieben:
Oder anders ausgedrückt:
Höre einfach auf, ständig alles hin und her zu wandeln. Rechne erst und am Schluß wandelst Du das Ergebnis. Und zu Dem Problem mit der Umwandlung einer negativen Zeit (als String) wieder in einem TTime-Wert: Auch dafür kann man sich eine eigene Funktion schreiben. Die dürfte nicht länger sein, als mein Beispiel.

EDIT:
Zu langsam.


Habs hinbekommen. Nochmals danke.

_________________
Wissen ist Macht. Nichts zu Wissen macht auch nichts