Autor Beitrag
conda
Hält's aus hier
Beiträge: 4

Win 2000 / Linux
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4

Win 2000 / Linux
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Di 26.04.05 18:59 
Sowas vielleicht?
ausblenden Delphi-Quelltext
1:
if Zeit < 0 then Zeit := Zeit + 1;					
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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:

ausblenden 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:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

ME
D3Prof.-D6Standard
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 26.04.05 19:30 
ja is a bissl komisch ausgedrückt :P
Blackheart
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

ME
D3Prof.-D6Standard
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4

Win 2000 / Linux
D5 Prof
BeitragVerfasst: 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 :)


Zuletzt bearbeitet von conda am Di 26.04.05 20:35, insgesamt 1-mal bearbeitet
Blackheart
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

ME
D3Prof.-D6Standard
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4

Win 2000 / Linux
D5 Prof
BeitragVerfasst: 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 :)