Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Uhrzeit


conda - Di 26.04.05 18:40
Titel: Uhrzeit
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 - Di 26.04.05 18:41

Bei Uhrzeiten würde ich sowieso immer mit dem Timestamp rechnen. Find ich besser.


conda - 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 - Di 26.04.05 18:59

Sowas vielleicht?

Delphi-Quelltext
1:
if Zeit < 0 then Zeit := Zeit + 1;                    


Christian S. - 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. :gruebel:


GTA-Place - Di 26.04.05 19:02

Such in der OH nach: "DateTimeToTimeStamp" und "TimeStampToDateTime"


Christian S. - 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.


F34r0fTh3D4rk - 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 :lol:


Blackheart - 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 - Di 26.04.05 19:30

ja is a bissl komisch ausgedrückt :P


Blackheart - 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 - 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 :D

@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 :)


Blackheart - 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 - 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 :)