Autor |
Beitrag |
basti_1984
      
Beiträge: 104
Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
|
Verfasst: 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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 104
Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
|
Verfasst: Do 01.02.07 11:39
jaenicke 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
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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 104
Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
|
Verfasst: Do 01.02.07 11:45
jaenicke 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 
      
Beiträge: 104
Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
|
Verfasst: Do 01.02.07 11:47
Gibt es vielleciht einen anderen Datentyp, der das kann.
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 01.02.07 11:58
Bastel Dir doch einfach eine eigen Funktion dafür. Hier mal ein ungeprüftes Beispiel:
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 
      
Beiträge: 104
Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
|
Verfasst: Do 01.02.07 12:18
jasocul hat folgendes geschrieben: | Bastel Dir doch einfach eine eigen Funktion dafür. Hier mal ein ungeprüftes Beispiel:
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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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.
basti_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 
      
Beiträge: 104
Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
|
Verfasst: Do 01.02.07 12:38
jaenicke 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.
basti_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
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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 
      
Beiträge: 104
Linux, Win Xp, Win 2000
Delphi, C, C++, PHP,
|
Verfasst: Do 01.02.07 12:56
jasocul 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
|
|