Autor |
Beitrag |
conda
Hält's aus hier
Beiträge: 4
Win 2000 / Linux
D5 Prof
|
Verfasst: Di 26.04.05 18:40
Hi, hab ein Programm geschrieben, das eine Uhrzeit von der Anderen abzieht.
Die Uhrzeiten werden über Edit-Felder eingegeben, zu TDateTime umgewandelt und berechnet.
Also bsp: 19:15:00 - 2:15:00 = 17:15:00.
Das klappt auch..
Nur sobald die Zeiten unter null uhr gehen, wie z.B. 06:30:00 - 07:00:00 macht er Fehler ( in diesem Fall bringt er mir als Lösung 00:30:00 anstatt 23:30.00 ).
Beim Addieren klappts aber wunderbar..
Wie könnte man das beheben?
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Di 26.04.05 18:41
Bei Uhrzeiten würde ich sowieso immer mit dem Timestamp rechnen. Find ich besser.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
conda 
Hält's aus hier
Beiträge: 4
Win 2000 / Linux
D5 Prof
|
Verfasst: Di 26.04.05 18:55
Hab grade mal n bisschen nach TimeStamp gesucht, hab keine Ahnung wie ich damit umgehen soll ( bin noch ziemlich neu in Delphi ), würd deswegen doch lieber die TDatetime-Funktion benutzen.
Vielleicht kannst du mir TimeStamp mal schnell anhand eines beispiels erklären
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Di 26.04.05 18:59
Sowas vielleicht?
Delphi-Quelltext 1:
| if Zeit < 0 then Zeit := Zeit + 1; |
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 26.04.05 19:00
Wenn ich das richtig sehe, dann muss die erste Zeit immer "später" als die andere sein, richtig? Du hast dann zwei Fälle:
Quelltext 1: 2:
| Uhrzeit1 > Uhrzeit2 --> Differenz = Uhrzeit1 - Uhrzeit2 Uhrzeit1 < Uhrzeit2 --> Uhrzeit1 am nächsten Tag --> Differenz = 24h - (Uhrzeit2 - Uhrzeit1) |
Wäre jetzt so meine Idee. 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Di 26.04.05 19:02
Such in der OH nach: "DateTimeToTimeStamp" und "TimeStampToDateTime"
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 26.04.05 19:03
das mit dem Timestamp behebt ja das eigentlich Problem nicht, dass nur Uhrzeiten eingegeben werden und dann erst noch entschieden werden muss, ob die Uhrzeiten am selben Tag oder an verschiedenen Tagen sein sollen.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Di 26.04.05 19:04
Zitat: |
19:15:00 - 2:15:00 = 17:15:00
|
ich hätte aber lieber, dass da 17:00:00 bei rauskommt 
|
|
Blackheart
      
Beiträge: 164
ME
D3Prof.-D6Standard
|
Verfasst: Di 26.04.05 19:17
Eigentlich wäre laut deiner Aussage das Ergebnis nicht 17:15 sondern - 7 Stunden
(Hi, hab ein Programm geschrieben, das eine Uhrzeit von der Anderen abzieht.)
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Di 26.04.05 19:30
ja is a bissl komisch ausgedrückt 
|
|
Blackheart
      
Beiträge: 164
ME
D3Prof.-D6Standard
|
Verfasst: Di 26.04.05 19:38
Der Ansatz von delfiphan war doch dann garnicht so schlecht denk ich mal if Zeit = 00 then Zeit = 24 ...
|
|
conda 
Hält's aus hier
Beiträge: 4
Win 2000 / Linux
D5 Prof
|
Verfasst: Di 26.04.05 20:19
Der Ansatz von delfiphan war genial!, so dürfte es klappen...
Ahja.. die Rechnungen oben waren schnell im Kopf gerechnet, sorry für den Fehler, muss natürlich 17:00:00 heissen
@Blackheart, <0 is besser, hab die Variablen mal überwachen lassen beim debuggen, die haben ziemlich komische werte... -0,xxx und andere negative komische kommazahlen
edit: Problem gelöst, ich bin nach delfiphan's Vorschlag vorgegangen, er akzeptiert aber keine 24h als Uhrzeit ( gibts ja eigentlich auch nicht )..
Hab dann 2 Uhrzeiten gemacht: 23:59:59 und 00:00:01, dann hatte ich auch meine 24 Stunden
Danke an alle die mir geholfen haben/helfen wollten 
Zuletzt bearbeitet von conda am Di 26.04.05 20:35, insgesamt 1-mal bearbeitet
|
|
Blackheart
      
Beiträge: 164
ME
D3Prof.-D6Standard
|
Verfasst: Di 26.04.05 20:35
je nach dem - fedenfalls ergeben 17 und 7 = 24 worüber man sich in diesem Fall dann nicht streiten braucht.
(2:15 Gestern 2:15 Morgen)was zu prüfen wäre.
|
|
conda 
Hält's aus hier
Beiträge: 4
Win 2000 / Linux
D5 Prof
|
Verfasst: Di 26.04.05 22:17
Stimmt, das is sozusagen n "bug".. aber gut, ich benutz das für mich selber und brauch das eigentlich immer nur im Zeitraum von max. 12 Stunden, überschreite dabei halt oft die 12 Uhr grenze und deswegen hat mich das n bisschen gestört, dass der mir immer die falschen werte ausgespuckt hat 
|
|