AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TDateTime

Ein Thema von Brudertak · begonnen am 21. Jan 2006 · letzter Beitrag vom 2. Feb 2006
 
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#4

Re: TDateTime

  Alt 23. Jan 2006, 06:21
Moin, Moin
@ibp ... Nicht ganz richtig !
Wenn ich das Datum zur Verfügung habe geht das natürlich so in Ordnung und sogar noch einfacher, aber darüber stand nichts in der Frage. O.g. Beispiel sollte nur den 'Weg' aufzeigen. Der OP wollte lediglich Aufklärung wie er die Differenz von 2 Uhrzeiten richtig ermitteln kann. Ermitteln deswegen, weil errechnen durch einfache Subtraktion scheidet ja wohl aus !!
Beim rechnen mit Uhrzeiten ohne Datum muss man einfach dem Datumssprung Rechnung tragen !!
Selbst wenn ich zur Uhrzeit das Datum seperat mit einfüge, muss ich trotzdem - ob es Dir passt oder nicht - dafür Sorge tragen das das Ende.Datum um einen Tag höher liegt als das Start.Datum.
Sprich: Ende.Zeit < Start.Zeit = (Ergebnis.Zeit + 24 Stunden) ...

bei folgender Function gehts mit oder ohne Datum:
Delphi-Quellcode:
Function TimeDif(Start, Ende: TDateTime): TTime;
var H, M: Integer;
    R: Real;
begin
  if Start > Ende then
    Ende:= IncDay(Ende);
  R:= HourSpan(Start,Ende);
  H:= Round(Int(R)); // Stunden
  M:= Round(Frac(R)* 60); // Minuten
  if M = 60 then begin // aus 60 Min wird 1 volle Stunde
    M:= 0;
    Inc(H);
  end;
  Result:= StrToTime(Format('%d:%.2d',[H, M]));
end;
... und der Aufruf wie folgt:
Delphi-Quellcode:
var ABeg, AEnd: TTime;
    Saz: TTime;
    Iaz: TTime;
    S: String;
begin
  ABeg:= StrToTime('8:00'); // ArbeitsBeginn
  AEnd:= StrToTime('16:00'); // ArbeitsEnde
  Saz:= StrToTime('8:30'); // Soll-Arbeitszeit
  Iaz:= TimeDif(ABeg, AEnd); // Ist-Arbeitszeit
  if Iaz > Saz then // Soll erfüllt ? = Überzeit
    S:= 'Überzeit ' + FormatDateTime('t', TimeDif(Saz, Iaz))
   else // sonst RestArbeitszeit
    S:= 'Rest '+ FormatDateTime('t', TimeDif(Iaz, Saz));

  ShowMessage('ArbZeit '+ FormatDateTime('t', ABeg)+ ' - '+
                            FormatDateTime('t', AEnd)+ #10#13#13+
              'Az (Soll) '+ FormatDateTime('t', Saz)+ #10#13+
              'Az (Ist) '+ FormatDateTime('t', Iaz)+ #10#13+
              S);
end;
Gruss Mario
Mario
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz