Einzelnen Beitrag anzeigen

Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#8

AW: mit Zeiten rechnen / vergleichen / erkennen

  Alt 25. Apr 2012, 16:07
An etwas ähnlichem sitze ich zur Zeit auch, nur gehe ich da einen Objektorientierten Ansatz : Eine Klasse, die Zeitabschnitte verwaltet und Schnittmengen aus 2 Zeiträumen ziehen kann :
Delphi-Quellcode:
{-----------------------------------------------------------------------------
  Classname : TTimespan
  Autor    : e310hel001
  Datum    : 17-Apr-2012
  Aufgabe  : Hält einen Zeitabschnitt
-----------------------------------------------------------------------------}

  TTimespan = class
  private
    FStart : TDateTime;
    FStop : TDateTime;
    function GetTimespan: TDateTime;
    procedure SetStop(const Value: TDateTime);
    procedure SetStart(const Value: TDateTime);
  public
    property Start : TDateTime read FStart write SetStart;
    property Stop : TDateTime read FStop write SetStop;
    property Timespan : TDateTime read GetTimespan;
    function IntersectTime ( aTimeSpan : TTimeSpan) : TDateTime;
  end;

{ TTimespan }

function TTimespan.GetTimespan: TDateTime;
begin
  Result := Stop - Start;
end;

procedure TTimespan.SetStop(const Value: TDateTime);
begin
  FStop := Value;
end;

procedure TTimespan.SetStart(const Value: TDateTime);
begin
  FStart := Value;
// Stop auf Now setzen, damit ein Gültiger Wert für den Laufenden Zeitraum
// vorhanden ist, auch wenn im Zeitraum kein Stop mehr kommt
  Stop := Now;
end;

function TTimespan.IntersectTime(aTimeSpan: TTimeSpan): TDateTime;
begin
  Result := Min(Stop,aTimeSpan.Stop) - Max(Start,aTimeSpan.Start);
end;
In die eine Timespan kommen Arbeitsbeginn und Arbeitsende, Timespan leifert dann die Arbeitszeit.
In eine andere z.B. 18.00 Uhr als Start und 20.00 Uhr als Ende. IntersectTime liefert dann die Zeitspanne, für die Zuschläge gezahlt werden müßen. Gleiches gilt z.B. auch für Pausen
Glückauf
  Mit Zitat antworten Zitat